您当前的位置: 首页 >  ar

彭世瑜

暂无认证

  • 0浏览

    0关注

    2791博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

彭世瑜 发布时间:2020-03-04 15:01:25 ,浏览量:0

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

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方案对比

关注
打赏
1665367115
查看更多评论
立即登录/注册

微信扫码登录

0.1896s