javascript - 一次使用两个或多个元素迭代数组

标签 javascript lodash

简而言之,我想知道是否有一种方法可以更直接地做到这一点。我觉得 block 的问题是我必须创建一个新数组,然后我必须映射它,以便我只得到第一个值。有没有办法可以一次循环 2 个项目?

a = [5, 1, 6, 0, 8, 0, 9, 1, 10, 0]
b = _.chunk(a, 2)
zeros = b.filter(s=> s[1] == 0).map(s=>s[0])
ones = b.filter(s=> s[1] == 1).map(s=>s[0])

我想要的替代方案

zeros=[]
ones=[]
_.MyEach(a, 2, (l, m)=> if(m==0) zero.push(l); else ones.push(l))

OR(不太可能但可以接受)

zeros = _.MyFilter(a, 2, (l, m) => if(m==0) l else null);
ones  = _.MyFilter(a, 2, (l, m) => if(m==1) l else null);

最佳答案

您可以完全不用 _ 库,在本例中使用 ES6 语法,它允许一次将 2D 数组分解为单个变量:

var [zeroes, ones] = a.reduce(
    (p, c, i, a) => i % 2 ? (p[c].push(a[i - 1]), p) : p, [[], []]);

这会迭代数组一次,对于奇数元素,它会查看其中包含的零或一,并将前面的值放入 [0][1] 种子数组的元素。

关于javascript - 一次使用两个或多个元素迭代数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40511322/

相关文章:

javascript - 如果少数键值对相同​​且另一个键值小于其他对象,则删除对象数组中的对象

javascript - 使用 Ajax GET 从服务器获取 XML

javascript - Slick Filter 不过滤,只是删除所有元素

javascript - 使用 java servlet 的 ajax 多输入表单验证不起作用。 Ajax不显示错误

javascript - 从日期 Javascript 集合中查找日期范围

javascript - 使用 Lodash,如何将这些数据转换为所需的格式?

javascript - lodash过滤器返回无法读取null的属性 'indexOf'

javascript - 合并具有来自两个不同对象数组的相应键值的对象

javascript - dimple js直线y轴在条形图上

javascript - 使用正则表达式或 JavaScript 提取 ID 的最后一部分