javascript - Lodash forEach 关联数组

标签 javascript arrays node.js foreach lodash

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/

相关文章:

Javascript 将对象存储在数组中

java - 使用 Java 访问对象数组中的数据

mysql - 如何在 sequelize 中将查询结果作为数组获取?

javascript - 如何设置下载 header 以避免客户端 Windows Defender 阻止 javascript 文件

javascript - 使用公交图层增加公交线路的权重 - Google map API

javascript - 在切换时销毁这个 jQuery 插件

node.js - 是否可以向 azure Blob 添加过滤器

javascript - 我需要使用 JS 创建促销代码验证

objective-c - 如何使用 coretext 在标签文本上设置图像

node.js - 尝试运行站点时 NodeJs 出错