每个条件都在里面

时间:2018-03-12 12:06:47

标签: javascript arrays foreach

我有两个数组:

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不同的内容。我想知道是否有办法使用此功能。

4 个答案:

答案 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]
    }
}
相关问题