带有 IndexOf() 和 splice() 的数组函数

Array function with IndexOf() and splice()

我有一个装满冰箱物品的数组。我试图找到特定项目的索引,然后将它们从数组中拼接出来,然后 return 项目和 console.log 冰箱中的剩余项目。 我不知道为什么它不起作用。我尝试了几种不同的变体,并尝试查看此问题的其他类似答案。非常感谢任何建议或帮助。

fridge = ["milk", "cheese", "butter"];

function removeItemFromFridge(item) {
  
  if (item.indexOf()) {
    fridge.splice(item);
    return item;
  } else {
    return null;
  }
}
removeItemFromFridge("milk");
removeItemFromFridge("butter");

console.log(fridge);

indexOf 查找与数组中给定值匹配的第一个索引,如果不存在这样的值则为 returns -1。对于拼接,您指定要开始删除的第一个索引,并在第二个参数中传递从第一个参数中的给定索引开始要删除的元素数。 我想你想这样做

let fridge = ["milk", "cheese", "butter"];

function removeItemFromFridge(item) {
  const index = fridge.indexOf(item);
  
  if (index > -1 ) {
    fridge.splice(index, 1);
    return item;
  } else {
    return null;
  }
}
removeItemFromFridge("milk");
removeItemFromFridge("butter");

console.log(fridge);

如果 fridge 是一个我们可以完全替换而不是修改现有数组的值,您可以改用 array.filter()

function removeItemFromFridge(item) {
  fridge = fridge.filter(v => v !== item)
}

否则,如果你确实想保留同一个数组,你可以找到项目索引并将其拼接。

function removeItemFromFridge(item) {
  const index = fridge.indexOf(item);
  if (index !== -1) fridge.splice(index, 1)
}

此外,不需要执行 return,因为您的调用方未使用返回值。