我有两个数组:
firstArray = [1, 2, 3, 4];
secondArray = [5, 6, 7, 8];
我必须使用他们的元素来计算forEach中的另一个元素。
_.forEach(firstArray, (data, i) => {
myValue: firstArray[i] + secondArray[i]
});
这很好用。但是我想一直忽略第二个数组的最后一个元素。因此,在这种情况下,对于i = 3
,结果应为4
,而不是4+8
,忽略第二个数组的最后一个值。
我知道使用if
语句不起作用但是有办法吗?
我的意思是在forEach中,在这种情况下,在函数不起作用之前删除最后一个元素。
更新:我收到了一些很好的答案,但所有答案都使用了与forEach
不同的内容。我想知道是否有办法使用此功能。
答案 0 :(得分:2)
您可以使用i
检查array.length
是否是第二个数组的最后一个元素。
我不太了解您的forEach
代码,但您可以在其中使用三元运算符:
_.forEach(firstArray, (data, i) => {
myValue: firstArray[i] + (i === secondArray.length - 1 ? 0 : secondArray[i])
});
答案 1 :(得分:1)
使用map
firstArray = [1, 2, 3, 4];
secondArray = [5, 6, 7, 8];
var output = firstArray.map( ( s, i, ar ) => s + (i == ar.length - 1 ? 0 : secondArray[i] ) );
更新:我收到了一些很好的答案,但他们都在使用 与forEach不同的东西。我想知道是否有 使用此功能的方法。
使用forEach
,您需要另一个数组来捕获总和
firstArray = [1, 2, 3, 4];
secondArray = [5, 6, 7, 8];
var myValue = [];
firstArray.map( ( s, i, ar ) => myValue.push( s + (i == ar.length - 1 ? 0 : secondArray[i] ) ) );
现在myValue
是
[6,8,10,4]
因此map
似乎是一种不那么冗长的方法。
答案 2 :(得分:1)
您可以缩小并映射数组。
var firstArray = [1, 2, 3, 4],
secondArray = [5, 6, 7, 8],
result = [firstArray, secondArray].reduce((a, b) => a.map((v, i) => v + b[i]));
console.log(result);
答案 3 :(得分:1)
我会这样做:
firstArray = [1, 2, 3, 4];
secondArray = [5, 6, 7, 8];
for (let i = 0; i < firstArray.length; i++){
if(i === firstArray.length - 1) {
myValue = firstArray[i];
} else {
myValue = firstArray[i] + secondArray[i]
}
}