我使用数组对象,并且想要删除其中 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/