[array / object]中的[literal]是什么意思?

时间:2011-09-19 11:09:00

标签: javascript

以下语法意味着什么:

1 in [1,2,3,5]

我知道它不会在数组中搜索1。但是它做了什么?

我看过它在循环中使用过:

for (var i in testArray)
{

}

但也见过这个本身就用过了。这是否意味着检查文字是否是数组或对象中另一个操作数的有效索引?

5 个答案:

答案 0 :(得分:3)

很简单,it's an object property search

print ('a' in {'a':1, 'b': 2}); // true
print ('c' in {'a':1, 'b': 2}); // false

Live demo.

这与the similar use of in in for loops略有不同。


另请注意,它应该与数组一起使用,尽管这是一个常见的错误。

未指定除数字键之外的哪些属性构成数组的内部,因此如果您正在使用数组,则应该坚持使用数组API(例如indexOf),否则您将最终使用{ {3}}:

print ('length' in [1,2,3,4]); // true

答案 1 :(得分:2)

文字 in 对象表示:“从对象获取属性文字。”< / p>

在循环中使用时,引擎将尝试访问对象的所有属性

1 in [1,2,3,4]不会检查值为1的元素是否出现,但会检查元素1(array[1])是否存在。

答案 2 :(得分:1)

对于数组中的每个项目,不使用传统的for循环看起来很便宜。

你的第二个例子是for-each循环。它没有文字1(一)。

答案 3 :(得分:1)

它用于迭代JavaScript对象。

此循环将遍历对象中的每个“键”。

它的常见用法是遍历这些对象:

var Car = { color: "blue", price: 20000 };
for (var key in Car)
    console.log("Propery " + key + " of Car is: " + Car[key]);

Live test case - 检查Chrome / Firefox JavaScript控制台以查看输出。

当用于普通数组时,每个“键”都将成为索引..例如:

var nums = [20, 15, 30]
for (var key in nums)
    console.log("Propery " + key + " of array is: " + nums[key]);

对于这种情况,会将键显示为0,1和2. Updated fiddle

答案 4 :(得分:1)

如果指定对象中存在指定的属性,则

'in'运算符返回true;在循环中使用它允许您迭代对象的所有属性