JavaScript对象数组中的增量ID

JavaScript对象数组中的增量ID,javascript,Javascript,我是JavaScript编程新手,然后我遇到了这样一个奇怪的情况。我有一个单数组对象和一个数组,如下所示: let data = [{"name": "Apple"} , {"name": "Orange"}, {"name": "Pineapple"}] let selected = []; 我在点击项目时执行点击data,然后data中的选定对象移动到selected。数

我是JavaScript编程新手,然后我遇到了这样一个奇怪的情况。我有一个单数组对象和一个数组,如下所示:

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;i
    dataObject
    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}]