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

来源:http://newsn.com.cn/say/nodejs-inarray.html

发布于2018年08月24日   作者:苏南大叔    来源:程序如此灵动~在本文中,您将会看到:如何在js中,如何判断某个数组中是否含有某个值。功用上就类似于php的in_array函数。本文中的几个方案,可以在node服务器端执行,也可以在高版本的浏览器中执行。在下面方案截图中,浏览器或者服务器端node,苏南大叔可能会交替使用。
环境描述
本文的测试环境是node8.11.1,chrome@67.0.3396.99。本文的测试数据是下面的两个值:
let arr=[“a”,“b”,“c”];
let arr2={“a”:“aaa”,“b”:“bbb”,“c”:“ccc”};
方案一,in
in操作符针对的是key,而非value。而对于普通的一维数组来说,key是隐藏的。所以,对于判断某个数组中是否含有某个值来说,这个方案并不合适。
in方案测试代码如下:
console.log(“1:”,“a” in arr);
console.log(“2:”,“aa” in arr);
console.log(“3:”,2 in arr);
console.log(“4:”,5 in arr);
console.log(“5:”,“a” in arr2);
console.log(“6:”,“aa” in arr2);
测试结果是:
在这里插入图片描述
方案二,indexOf
苏南大叔的印象里面,indexOf是用于字符串的。但是在这里,用于一个数组的话,也是可以执行的。但是用在一个对象obj上面的时候,是报错的。
console.log(“7:”,arr.indexOf(“a”));
console.log(“8:”,arr.indexOf(“aa”));
// console.log(“9:”,arr2.indexOf(“b”)); //报错
// console.log(“10:”,arr2.indexOf(“aaa”)); //报错
结果是:
7: 0
8: -1
方案三,includes
同indexOf一样,includes仅能用于数组操作。
console.log(“11:”,arr.includes(“a”));
console.log(“12:”,arr.includes(“aa”));
//console.log(“13:”,arr2.includes(“a”)); //报错
//console.log(“14:”,arr2.includes(“aa”)); //报错
运行结果是:
11: true
12: false
方案四,自定义函数inArray
这个自定义函数inArray,可以用于数组,也可以用于对象。
当然,在php里面,这个函数名字就应该是in_array,那么在js的世界里面,就入乡随俗一下,换个inArray名字吧~
function inArray(search,array){
for(var i in array){
if(array[i]==search){
return true;
}
}
return false;
}
console.log(“15:”,inArray(“a”,arr));
console.log(“16:”,inArray(“aa”,arr));
console.log(“17:”,inArray(“a”,arr2));
console.log(“18:”,inArray(“bbb”,arr2));
15: true
16: false
17: false
18: true

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值