Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按名称从数组中删除项_Javascript - Fatal编程技术网

Javascript 按名称从数组中删除项

Javascript 按名称从数组中删除项,javascript,Javascript,我正在尝试编写一个函数,以按名称从数组中删除项。尽管传入了arr.indexOf(i),代码仍会不断删除数组中的第一项(索引0) 让水果=[苹果、桔子、葡萄、香蕉] 函数removeFlavorByName(arr,字符串){ 让占位符; 对于(设i=0;i如果你想简化你的代码,这里是相同的函数清理。因为你使用的是indexOf,你不需要循环 水果=[“苹果”、“橙子”、“葡萄”、“香蕉”] 函数removeFlavorByName(arr,字符串){ 索引=arr.indexOf(字符串)

我正在尝试编写一个函数,以按名称从数组中删除项。尽管传入了arr.indexOf(i),代码仍会不断删除数组中的第一项(索引0)

让水果=[苹果、桔子、葡萄、香蕉]
函数removeFlavorByName(arr,字符串){
让占位符;

对于(设i=0;i如果你想简化你的代码,这里是相同的函数清理。因为你使用的是
indexOf
,你不需要循环

水果=[“苹果”、“橙子”、“葡萄”、“香蕉”]
函数removeFlavorByName(arr,字符串){
索引=arr.indexOf(字符串);
阵列拼接(索引,1)
返回arr
}

log(removeFlavorByName(水果,“苹果”);
另一种可能更简单、更紧凑的解决方案是使用过滤器内置方法

水果=[“苹果”、“橙子”、“葡萄”、“香蕉”]
常量removeFlavor=(arr,string)=>arr.filter((项)=>item!=string)
console.log(删除favorByName(水果,“苹果”);

另一种解决方案是使用过滤功能

水果=[“苹果”、“橙子”、“葡萄”、“香蕉”]
函数removeFlavorByName(arr,字符串){
返回arr.filter(水果=>水果!==字符串);
}

log(删除FlavorByName(水果,“苹果”);
您需要将数据添加为双引号中的字符串

let fruits = ["apples", "oranges", "grapes", "bananas"];

function removeFlavorByName(arr, string) {
  let newArray = arr.filter((item) => item !== string);
  return newArray;
}

console.log(removeFlavorByName(fruits, "apples"));
来自@的解决方案非常好


请注意,如果数组中不存在字符串,indexOf将返回-1。如果将其与.splice一起使用,则最后一项将被提取。

indexOf
具有大写字母OThanks。我修复了它,但出现了相同的错误。它似乎认为indexOf总是返回0,这不是相同的错误。如果它返回0,则意味着现在您无法获得“arr.indexof不是一个函数”。代码的第一行引用了尚未声明的变量。在示例中,数组应该包含字符串值:let fruits=[“apples”、“oranges”、“grapes”、“bananas”];我的数组有字符串。我只是在上面匆匆编写了它,但在代码中它确实有“apples”“等等。我声明了唯一一个变量,它是占位符,用于存储数组中字符串的索引