JavaScript对象数组中的增量ID
我是JavaScript编程新手,然后我遇到了这样一个奇怪的情况。我有一个单数组对象和一个数组,如下所示:JavaScript对象数组中的增量ID,javascript,Javascript,我是JavaScript编程新手,然后我遇到了这样一个奇怪的情况。我有一个单数组对象和一个数组,如下所示: let data = [{"name": "Apple"} , {"name": "Orange"}, {"name": "Pineapple"}] let selected = []; 我在点击项目时执行点击data,然后data中的选定对象移动到selected。数
let data = [{"name": "Apple"} , {"name": "Orange"}, {"name": "Pineapple"}]
let selected = [];
我在点击项目时执行点击data
,然后data
中的选定对象移动到selected
。数据没有ID,因此我创建了ID,其位置索引位于选中的
。但是如果有相同的物体,位置也是相同的。我尝试了下面的一些代码,但不起作用
一,
编辑
此处为可复制代码:
let data = [{"name": "Apple"} , {"name": "Orange"}, {"name": "Pineapple"}]
let selected = [];
const dataObject = {"name": "Apple"};
selected.push(dataObject);
selected.push(dataObject);
for(let i = 0; i<selected.length; i++) {
selected[i]['position'] = i;
}
document.write('<br>' + JSON.stringify(selected));
// Output : [{"name":"Apple","position":1},{"name":"Apple","position":1}]
// Output Expect: [{"name":"Apple","position":0},{"name":"Apple","position":1}]
let data=[{“name”:“Apple”},{“name”:“Orange”},{“name”:“菠萝”}]
让选定的=[];
const dataObject={“name”:“Apple”};
选中。推送(数据对象);
选中。推送(数据对象);
对于(设i=0;idataObject
在selected
数组中通过引用分配,因此它是您分配两次的同一对象,在一次中的更改将更改selected
数组的两个元素,因为它们是相同的对象
看看下面的代码是否有用
let data=[{“name”:“Apple”},{“name”:“Orange”},{“name”:“菠萝”}]
让选定的=[];
const dataObject={“name”:“Apple”};
//使用dataObject将新对象指定给选定对象
push({“name”:dataObject.name});
//使用dataObject将新对象指定给选定对象
push({“name”:dataObject.name});
对于(让i=0;i请提供代码来重现问题,最好不使用单击处理程序,但只按顺序执行代码。输入、预期输出、您得到的输出。您的问题不太清楚,如果可能,请尝试使用-输入数据、代码及其问题和预期输出更新您的问题。对不起,我编辑并重新生成了简单版本在在线编辑器中。抱歉,再次看到,所以Javascript传递了引用。这对我来说是新的。谢谢你的回答和链接
const dataObject = {"name": "Apple"};
selected.push(dataObject);
for(let i = 0; i<selected.length; i++) {
selected[i]['position'] = i;
}
[{"name": "Apple", position: 2} , {"name": "Orange", position: 1}, {"name": "Apple", position: 2}]
let data = [{"name": "Apple"} , {"name": "Orange"}, {"name": "Pineapple"}]
let selected = [];
const dataObject = {"name": "Apple"};
selected.push(dataObject);
selected.push(dataObject);
for(let i = 0; i<selected.length; i++) {
selected[i]['position'] = i;
}
document.write('<br>' + JSON.stringify(selected));
// Output : [{"name":"Apple","position":1},{"name":"Apple","position":1}]
// Output Expect: [{"name":"Apple","position":0},{"name":"Apple","position":1}]