可以将数组'value key'赋值给一个值吗?

时间:2016-04-08 11:06:35

标签: javascript

我有一个像这样的数组

var list =['lemon', 'apple'];
list['yuck'] = 'durian';

list.forEach(function(i){
    console.log(i);
});

输出是

lemon
apple

榴莲在哪里?

这个问题不是关于如何正确使用数组,我只是觉得奇怪,我们能够做到这一点,这里到底发生了什么?

3 个答案:

答案 0 :(得分:2)

forEach iterates on an array's elements,即由正整数标识的属性。 'yuck'是一个无法转换为整数的字符串。

如果你真的想迭代所有值,你可以这样做:

for (var key in list) {
  console.log(list[key]);
}

但它打破了所有数组的优化。您应该使用Set或对象。

答案 1 :(得分:2)

因为这不是你如何为javascript数组添加值。您必须使用方法Array.prototype.push()

var list = ['lemon', 'apple'];
list.push('durian');

list.forEach(function(i){
    console.log(i);
});

答案 2 :(得分:1)

list['yuck'] = 'durian';

此处的语法是将文本durain添加到属性yuck

您在此处添加键值。这是为对象赋值的方法。

由于无法向数组添加键值,因此上述行将引发异常。所以你的数组永远不会被修改。

这一个

list.forEach(function(i){ console.log(i); });

您正在循环初始数组。因此打印相同的值。

另一方面,你可以使用。  list.push('durian')

或者

list[2] = 'durian'

相关问题