我有一个像这样的数组
var list =['lemon', 'apple'];
list['yuck'] = 'durian';
list.forEach(function(i){
console.log(i);
});
输出是
lemon
apple
榴莲在哪里?
这个问题不是关于如何正确使用数组,我只是觉得奇怪,我们能够做到这一点,这里到底发生了什么?
答案 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'