如何在数组中找到某个元素并进行更改?

时间:2018-05-19 18:53:22

标签: javascript arrays

我需要创建一个函数来查找元素“Tolkn”并将其更改为“Tolkien”。

changeName = (arr) => {
  if (arr === "Tolkn") {
    arr.push("Tolkien")
  }
  return arr;
}

3 个答案:

答案 0 :(得分:2)

像这样修改你的功能

let arr = ['test', 'test2', 'Tolkn', 'test3'];


let changeName = (inpArr) => {
  let index = inpArr.findIndex(function(itm) {
    return itm == 'Tolkn';
  })
  if (index === -1) {
    return inpArr;
  }
  inpArr[index] = 'Tolkien';
  return inpArr;
};

console.log(changeName(arr));

forEach

的另一种方式

let arr = ['test', 'test2', 'Tolkn', 'test3'];

function changeName(arr) {
  let output = [];
  arr.forEach(function(itm) {
    if (itm == "Tolkn") {
      output.push("Tolkien")
    } else {
      output.push(itm);
    }
  });
  return output;
}

console.log(changeName(arr));

答案 1 :(得分:1)

使用正确的值制作副本(由于@MattMorgan,现在以更简洁的形式)。

var arr = ["Tolkn","a","some","Tolkn"];
var changeName = arr.map.bind(arr, elem => elem === "Tolkn" ? "Tolkien" : elem);
arr = changeName(arr);
console.log(arr);

或到位替换:

var arr = ["Tolkn","a","some","Tolkn"];
var changeName = arr.forEach.bind(arr, (val, ind) => {arr[ind] = (val === "Tolkn" ? "Tolkien" : val)});
changeName(arr);
console.log(arr);

答案 2 :(得分:0)

简短版本,如果你不介意可能隐藏" -1"属性:



android version 4.0.1