javascript - 如何从数组对象中删除元素

标签 javascript arrays array-splice

我使用数组对象,并且想要删除其中 1 个数组中的特定值。

let medici= ["Person1","Person2", "Person3", "Person4", "Person5",  "Person6" ];
let giorni = ["Lun", "Mar", "Mer","Gio","Ven"]; let presenti ={};
for  (let giorno of giorni){ presenti[giorno] = medici; }

我得到:

Gio: ["Person1", "Person2", "Person3", "Person4", "Person5", "Person6"],
  Lun: ["Person1", "Person2", "Person3", "Person4", "Person5", "Person6"],
  Mar: ["Person1", "Person2", "Person3", "Person4", "Person5", "Person6"],
  Mer: ["Person1", "Person2", "Person3", "Person4", "Person5", "Person6"],
  Ven: ["Person1", "Person2", "Person3", "Person4", "Person5", "Person6"]

现在我想删除特定数组中的特定值:

giorno="Ven";
nome="Person1";
presenti[giorno].splice(presenti[giorno].indexOf(nome), 1);

它删除所有数组中的值!不仅在“Ven”中...... 如何删除特定数组中的单个元素而不影响该对象的其他数组?

谢谢

最佳答案

const medici = ["Person1","Person2", "Person3", "Person4", "Person5",  "Person6" ];
const gironi = ["Lun", "Mar", "Mer","Gio","Ven"];
const presenti = {};

for (const giorno of gironi) {
    presenti[giorno] = [...medici];
}

presenti["Ven"].splice(presenti["Ven"].indexOf("Person1"), 1);

console.log(presenti);

您的问题与内存引用有关,当您将两个变量等同时,您并不是创建另一个相同的对象,而是将对象引用从一个变量复制到另一个变量,因此,如果您修改 X ,您会更改 Y,要更正,您可以使用扩展运算符 [...medici]

创建另一个数组

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax

关于javascript - 如何从数组对象中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70807471/

相关文章:

javascript - 如何从ajax获取准确的错误消息

C - 为什么在将单个字符分配给数组时自动添加字符串终止符?

javascript - 如何根据另一个数组对一个数组进行排序

javascript - 从本地存储中删除项目

javascript - 数组的拼接是否会减少 array.length 的值?

javascript - 当没有值时是否可以渲染重新图表工具提示事件?

javascript - 在线拖放式 HTML5 IDE

javascript - 无法在 package.json 中正确指向 React js 的开始标记

php - mysql_fetch_array 仅打印第一个结果

c++ - 生成随机数并将它们放入数组中