定义用于测试的列表和对象
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