关于在chrome控制台执行一些语句遇到的问题?

var b = ["red","color"];
1 in b; //true
"red" in b; //false

执行结果为true和false是为什么,求大神详细解答以下?以及如果我想确定数组b里又没有"red"(即在字符串数组中有没有某一确定的字符串)应该用什么方法?

阅读 3.3k
4 个回答

查了一下Array对象API,借用Array对象的方法实现:
["red","color"].some(function(val) {return val == "red";});

此处的1是下标,而数组b中的下标最大为1,没有"red"下标。
in 多用于遍历关联数组或者对象属性。
你可以这样定义这个b数组:var b = []; b["red"] = red; 再执行 "red" in b; 返回 true

in操作符用来判断某个属性属于某个对象,可以是对象的直接属性,也可以是通过prototype继承的属性。

b[0] = "red";
b[1] = "color";

所以,数组b中,0和1是索引,是数组b的直接属性,而“red”是数组b的索引0的值。
换句话说,in操作符是用来查看索引(index或key)的。

判断数组包含用b.indexOf('red')

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题