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

相关文章
|
1月前
|
JavaScript 算法
原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,通过计算接触面积(重叠覆盖面积)大小来判断接触对象DOM
原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,通过计算接触面积(重叠覆盖面积)大小来判断接触对象DOM
|
10月前
|
存储 JavaScript 前端开发
js数组高阶函数——includes()方法
js数组高阶函数——includes()方法
197 0
|
2月前
|
JavaScript 前端开发 索引
JavaScript字符串检查:从基础到高级
【2月更文挑战第26天】
28 0
JavaScript字符串检查:从基础到高级
|
4天前
|
JavaScript 前端开发 索引
js的includes函数
js的includes函数
9 1
|
24天前
|
JavaScript
【Js】检查Date对象是否为Invalid Date
【Js】检查Date对象是否为Invalid Date
31 0
|
4月前
|
JavaScript 前端开发 测试技术
探究 JavaScript 类型检查的利器:typeof 和 instanceof
探究 JavaScript 类型检查的利器:typeof 和 instanceof
|
4月前
|
传感器 JavaScript 前端开发
前端框架Svelte放弃TS,如何使用纯JS实现类型检查?
前端框架Svelte放弃TS,如何使用纯JS实现类型检查?
|
10月前
|
JavaScript 前端开发
JavaScript 中检查对象是否为空
在 Javascript 中定义一个新对象非常简单——但是如果你想知道它是否为空怎么办?例如,{}是一个空对象,但是我们如何实际测试它呢?
|
8月前
|
JavaScript
JS判断包含:includes
JS判断包含:includes
|
9月前
|
JavaScript 前端开发
如何在 JavaScript 中检查数字是正数还是负数
如何在 JavaScript 中检查数字是正数还是负数
67 0