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

Javascript 如何在数组中找到某个元素并对其进行更改?,javascript,arrays,Javascript,Arrays,我需要创建一个函数来查找元素“Tolkn”并将其更改为“Tolkien” 像这样修改你的函数 让arr=['test','test2','Tolkn','test3']; 让changeName=(inpArr)=>{ let index=inpArr.findIndex(函数(itm){ 返回itm=='Tolkn'; }) 如果(索引==-1){ 返回inpArr; } inpArr[index]=“托尔金”; 返回inpArr; }; console.log(changeName(arr

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


像这样修改你的函数

让arr=['test','test2','Tolkn','test3'];
让changeName=(inpArr)=>{
let index=inpArr.findIndex(函数(itm){
返回itm=='Tolkn';
})
如果(索引==-1){
返回inpArr;
}
inpArr[index]=“托尔金”;
返回inpArr;
};

console.log(changeName(arr))像这样修改您的函数

let arr=[‘test’、'test2'、'toln'、'test3'];
让changeName=(inpArr)=>{
let index=inpArr.findIndex(函数(itm){
返回itm==“Toln”;
})
如果(索引==-1){
返回inpArr;
}
inpArr[index]=“托尔金”;
返回inpArr;
};

console.log(changeName(arr))使用正确的值制作副本(现在由于@MattMorgan,格式更加简洁)

var arr=[“Tolkn”、“a”、“some”、“Tolkn”];
var changeName=arr.map.bind(arr,elem=>elem===“Tolkn”?“Tolkien”:elem);
arr=变更名称(arr);

控制台日志(arr)使用正确的值制作副本(现在由于@MattMorgan,格式更加简洁)

var arr=[“Tolkn”、“a”、“some”、“Tolkn”];
var changeName=arr.map.bind(arr,elem=>elem===“Tolkn”?“Tolkien”:elem);
arr=变更名称(arr);

控制台日志(arr)短版本,如果您不介意可能隐藏的“-1”属性:

let changeName=arr=>(arr[arr.indexOf(“Tolkn”)]=“Tolkien”,arr)
console.log(changeName(['Tolkn'])/['Tolkien']

console.log(changeName(['Talkn'])/['Talkn']
如果您不介意可能隐藏的“-1”属性,请使用短版本:

let changeName=arr=>(arr[arr.indexOf(“Tolkn”)]=“Tolkien”,arr)
console.log(changeName(['Tolkn'])/['Tolkien']

log(changeName(['Talkn'])/['Talkn']
这种方法可以工作,但不能通过我需要它通过的所有测试。我让它工作了。但是有没有更简单的方法呢?如果你只想用其他的东西来改变一个元素,第一个是好的。但是,如果您有多个开关,请将第二个开关与
开关箱一起使用
if else
条件@batman091716@Saeed.Ataee您不需要在第一个版本中
返回arr
。您正在就地修改阵列。我提到这一点是因为我认为返回是误导性的,它可能被误读为返回一个新数组,使输入保持不变。@Saeed.Ataee您的第一个代码示例修改了作为输入传递的数组。您不需要
返回该数组,因为外部作用域已经包含对它的引用。人们会不同意这是否是一个好主意,但当你做这样的事情时,你应该尽可能清楚:你不是在制作一个新的数组,而是在改变原来的数组。您的第二个代码示例创建了一个新的数组,保留原始数组不变,因此您当然需要返回它。这种方法可以工作,但没有通过我需要它通过的所有测试。我让它工作了。但是有没有更简单的方法呢?如果你只想用其他的东西来改变一个元素,第一个是好的。但是,如果您有多个开关,请将第二个开关与
开关箱一起使用
if else
条件@batman091716@Saeed.Ataee您不需要在第一个版本中
返回arr
。您正在就地修改阵列。我提到这一点是因为我认为返回是误导性的,它可能被误读为返回一个新数组,使输入保持不变。@Saeed.Ataee您的第一个代码示例修改了作为输入传递的数组。您不需要
返回该数组,因为外部作用域已经包含对它的引用。人们会不同意这是不是个好主意,但是当你做这样的事情时,你应该尽可能清楚:你没有制作新的数组,你正在改变原来的数组。您的第二个代码示例创建了一个新的数组,保留原始数组不变,因此您当然需要返回它。您可以将第一个函数(无需
return
)简化为
var changeName=arr.map.bind(arr,elem=>elem===“Tolkn”?“Tolkien”:elem)
@MattMorgan奇怪的是,我确实先尝试了一下,结果发现一个语法错误。不过现在似乎可以工作了。您可以将第一个函数(无需
返回
)简化为
var changeName=arr.map.bind(arr,elem=>elem===“Tolkn”?“Tolkien”:elem)
@MattMorgan奇怪的是,我确实先尝试了一下,结果发现一个语法错误。不过现在似乎可以用了。
changeName = (arr) => {
  if (arr === "Tolkn") {
    arr.push("Tolkien")
  }
  return arr;
}