js成员检查方式in、indexOf、includes、inArray

简介: js成员检查方式in、indexOf、includes、inArray

定义用于测试的列表和对象

let list = ["pig", "dog", "cat"];
let obj = {
    "name": "dog",
    "age": 12,
    "sex": "man"
};

方案一、in

in操作符针对的是key,而非value, 对于普通的一维数组来说,key是隐藏的

console.log(1 in list);      // true
console.log('pig' in list);  // false
console.log('name' in obj);  // true
console.log('dog' in obj);   // false

方案二、indexOf

indexOf是用于字符串和数组,不能用于对象

console.log(list.indexOf('dog'));    // 1
console.log(list.indexOf('apple'));  // -1

方案三、includes

同indexOf一样,includes仅能用于字符串和数组

console.log(list.includes('dog'));    // true
console.log(list.includes('apple'));  // false

方案四、自定义函数inArray

数组检查value, 对象检查key

/**
 * 自定义成员检查函数
 * @param {List/Object} array 
 * @param {非引用类型} value 
 */
function inArray(array, value) {
    // 数组检查value
    if (Array.isArray(array)) {
        for (let index in array) {
            if (array[index] == value) {
                return true;
            }
        }
    }
    // 对象检查key
    else {
        for (let index in array) {
            if (index == value) {
                return true;
            }
        }
    }
    return false;
}
// 作用于数组
console.log(inArray(list, 'dog'));    // true
console.log(inArray(list, 'apple'));  // false
// 作用于对象
console.log(inArray(obj, 'name'));     // true
console.log(inArray(obj, 'dog'));      // false

Python中的in成员检查

检查的是key

lst = ["pig", "dog", "cat"]
obj = {
    "name": "dog",
    "age": 12,
    "sex": "man"
}
# 作用于数组
print('dog' in lst)   # True
print('apple' in lst)  # False
# 作用于对象
print('name' in obj)   # True
print('dog' in obj)  # False

参考

js如何判断数组含有某值,in/includes/inArray/indexOf方案对比

相关文章
|
安全 关系型数据库 MySQL
如何将数据从MySQL同步到其他系统
【10月更文挑战第17天】如何将数据从MySQL同步到其他系统
1680 0
|
存储 监控 Linux
【Linux IO多路复用 】 Linux下select函数全解析:驾驭I-O复用的高效之道
【Linux IO多路复用 】 Linux下select函数全解析:驾驭I-O复用的高效之道
2533 0
|
JavaScript 前端开发 数据库
让你少踩坑的fastadmin教程(3)
让你少踩坑的fastadmin教程
1800 0
让你少踩坑的fastadmin教程(3)
|
前端开发 JavaScript 应用服务中间件
Https网站中请求Http内容
Https网站中无法请求Http资源(静态资源、接口等) 分析 解决方法
Https网站中请求Http内容
收集的几个国外在线接收短信验证码的网站
有时候,在某些平台上,我们可能需要注册一个临时账号。而注册过程中又需要输入手机号进行短信验证,但是我们又不想泄露隐私,所以这时候一些临时短信接收服务便派上了用场。以下收集的网站都是在线提供一些国外手机号,当你需要进行短信验证的时候(比如注册某个账号),这时你可以使用网站上的提供手机号进行接码,网站上会公开短信的所有内容。
43587 0
|
4月前
|
人工智能 自然语言处理 前端开发
AI 调酒师上岗!Qwen3-Coder × 通义灵码完成 AI 调酒师项目实战开发
本课程通过“AI调酒师”项目实战,讲解如何使用通义灵码与Qwen3-Coder模型结合阿里云百炼平台,从需求分析、前端界面搭建、后端服务调用到整体部署的全流程开发。内容涵盖Bento UI设计、Tailwind CSS布局、语音识别与大模型内容生成,并结合MCP服务实现设计稿驱动开发,帮助开发者快速构建趣味AI应用,提升产品落地能力。
477 33
|
JavaScript 前端开发
除了点击事件,`addEventListener` 还能用于处理哪些事件类型?
【10月更文挑战第29天】 `addEventListener` 能够处理的事件类型非常丰富,涵盖了各种用户交互和页面状态变化的场景,通过合理地使用这些事件类型,可以为网页或应用程序添加丰富多样的交互效果和功能。
|
10月前
|
人工智能 算法 API
重磅:谷歌AI Gemini 2.0 Pro/Flash已来,国内用户怎么使用?
当人工智能的浪潮席卷全球,谷歌再次站在了时代的潮头。Gemini 2.0,这个名字如今已成为 AI 领域最耀眼的明星。它不仅仅是一个模型的升级,更代表着一场技术革命的开端。2024 年末,Gemini 2.0 Flash 以其疾风骤雨般的速度震撼登场,紧接着,2025 年初,Gemini 2.0 Pro 系列的发布,则将这场革命推向了高潮。谷歌正式宣告,我们已步入 Gemini 2.0 时代!
782 15
舆情风险防控措施分享
舆情风险防控措施分享
|
机器学习/深度学习 人工智能 TensorFlow
机器学习项目实战:使用Python实现图像识别
在AI时代,Python借助TensorFlow和Keras实现图像识别,尤其在监控、驾驶、医疗等领域有广泛应用。本文通过构建CNN模型识别MNIST手写数字,展示图像识别流程:安装库→加载预处理数据→构建模型→训练→评估。简单项目为深度学习入门提供基础,为进一步探索复杂场景打下基础。
1410 5