在 Lodash
中是否有用于关联数组的 forEach
循环?我发现调用“forEach”的函数只适用于索引数组。例如,如果我有一个数组 myArray
,其值为 [1, 2, 3]
,然后执行
lodash.forEach(myArray, function(index) {
console.log(index);
});
并运行该函数(在 Node
中),我得到了预期的结果:
1
2
3
但是,当我尝试使用关联数组时,它不起作用:
lodash = require('lodash');
myArray = [];
myArray['valOne'] = 1;
myArray['valTwo'] = 2;
myArray['valThree'] = 3;
lodash.forEach(myArray, function(index) {
console.log('7');
});
正如您在 Node
中运行它所看到的,回调函数不会触发,即使它包含数组元素以外的其他内容。它似乎完全跳过了循环。
首先,为什么会这样?其次,Lodash
中是否包含另一个函数来解决这个问题,或者,如果没有,是否有办法使用 forEach
函数来完成此任务,而无需更改过程中的原始数组?
最佳答案
Lodash
具有用于此目的的函数 forOwn
。在第二个数组中,如果你这样做
_.forOwn(myArray, function(index) {
console.log(index);
});
你应该得到预期的结果。
不过,我仍然不确定为什么 forEach
似乎跳过了第一个函数,但我相信这可能与没有“长度”的数组有关。 JavaScript
数组的长度是它拥有的最高编号索引。例如,定义为 myOtherArray[999]="myValue"
的数组 myOtherArray
的长度为 1,000(因为数组是零索引的,这意味着它们从 0 开始,不是 1),即使它没有其他值。这意味着没有编号索引或只有负索引的数组将没有 length
属性。 Lodash
必须接受这一点并且不给数组一个 length
属性,可能会保持一致性和性能,因此不会呈现任何输出。
关于javascript - Lodash forEach 关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24349118/