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

时间:2016-11-09 16:08:37

标签: javascript lodash

总之,我想知道是否有办法以更直接的方式做到这一点。我觉得chunk的问题是我要创建一个新的数组,然后我必须映射它,所以我只得到第一个值。有没有办法可以一次循环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);

1 个答案:

答案 0 :(得分:2)

你可以完全没有_库,在这种情况下使用ES6语法,它允许在一次命中中将2D数组分解为单个变量:

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

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