防止功能在满足第一个条件时停止

时间:2020-05-04 11:18:02

标签: javascript arrays dictionary

这可能是一个初学者的问题……我试图防止某个函数在遇到第一个条件时停止。这是我的示例:

// Array of values
const valArray = [1, 4, 9, 16];

// Array of index values
const indArr = [0, 2];

const multipliedVal = valArray.map((val, index) => {

    for (let i of indArr) {
        // Case 1
        if (index == i) return val * 3; 
        // Case 2
        if (index == i) return val * 3; 
        else return val;
    }

});

console.log(multipliedVal);

在情况1中,它输出:

数组[3,undefined,27,undefined]

在情况2中,它输出:

数组[3,4,9,16]

我想应用情况2,如果索引2等于0和2(如indArr中定义),它将valArray的值乘以3(但map函数在满足第一个条件后停止运行)。它确实将1乘以3,而不是9。我希望输出为:

数组[3,4,27,16]

我用splice方法尝试了其他一些东西,但没有弄清楚。我敢打赌,递归将与我要实现的目标有关,但无法弄清楚该怎么做。

也许有人可以提供帮助?谢谢。

1 个答案:

答案 0 :(得分:0)

使用index检查indArr中是否存在indexOf。如果是这样,则将值相乘并返回,否则返回值

const valArray = [1, 4, 9, 16];

// Array of index values
const indArr = [0, 2];

const multipliedVal = valArray.map((val, index) => {
  if (indArr.indexOf(index) !== -1) {
    return val * 3
  }
  return val;

});

console.log(multipliedVal);