首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何复制同名的数据?

如何复制同名的数据?
EN

Stack Overflow用户
提问于 2022-03-19 02:06:08
回答 2查看 115关注 0票数 0

我的代码:

代码语言:javascript
复制
this.temp1.push(this.json);

for(let i=0; i<this.temp1.length; i++){
    if(this.temp1[i].name == this.json.name){       
        this.orderList[i] = this.json;
        this.DBorder[i] = this.order_json;      
    }
    else{
        this.orderList.push(this.json);
        this.DBorder.push(this.order_json);
    }
}

我的第一个输入数据:

代码语言:javascript
复制
[{"name":"Pad-Thai", "price":10,"amount":1,"total":10}]

我的第二个输入数据(有一个新的金额):

代码语言:javascript
复制
[{"name":"Pad-Thai", "price":10,"amount":3,"total":30}]

目前的结果:

代码语言:javascript
复制
[{"name":"Pad-Thai", "price":10,"amount":3,"total":30},
{"name":"Pad-Thai", "price":10,"amount":3,"total":30}]

预期结果:

代码语言:javascript
复制
[{"name":"Pad-Thai", "price":10,"amount":3,"total":30}]
EN

回答 2

Stack Overflow用户

发布于 2022-03-19 05:13:12

  1. 在数组中添加新对象时,检查名称和更新是否存在其他嵌入。

代码语言:javascript
复制
  const obj1 = { "name": "Pad-Thai", "price": 10, "amount": 1, "total": 10 };         const obj2 = { "name": "Pad-Thai", "price": 10, "amount": 3, "total": 30 };         const obj3 = { "name": "Some-Other-Dish", "price": 20, "amount": 2, "total": 40 };          let temp1 = [];         function addItem(obj) {             let index = temp1.findIndex(x => x.name === obj.name);             if (index > -1) {                 temp1[index] = obj;             } else {                 temp1.push(obj);             }         }         addItem(obj1);         addItem(obj2);         addItem(obj3);         console.log('temp1 : ', temp1);

  1. 如果您已经添加了相同名称的obj,则可以删除使用for循环并查找索引或减少循环

代码语言:javascript
复制
  const output = [         { "name": "Pad-Thai", "price": 10, "amount": 1, "total": 10 },         { "name": "Pad-Thai", "price": 10, "amount": 3, "total": 30 },         { "name": "Some-Other-Dish", "price": 20, "amount": 2, "total": 40 }     ]      let temp1 = [];     output.forEach(obj => {         let index = temp1.findIndex(x => x.name === obj.name);         if (index > -1) {             temp1[index] = obj;         } else {             temp1.push(obj);         }      });     console.log('temp1 : ', temp1);
票数 2
EN

Stack Overflow用户

发布于 2022-03-19 06:24:02

代码语言:javascript
复制
const input1 = [{
  "name": "Pad-Thai",
  "price": 10,
  "amount": 3,
  "total": 10
}]
const input2 = [{
  "name": "Pad-Thai",
  "price": 10,
  "amount": 3,
  "total": 30
}];

function merge(existing, update, identifier) {
  const mapped = update.reduce((acc, el) => {
    return { ...acc,
      [el[identifier]]: el
    };
  }, {});

  return existing.map(el => {
    const altered = { ...el,
      ...mapped[el[identifier]]
    };
    
    delete mapped[el[identifier]];

    return altered;
  }).concat(Object.values(mapped));
}

console.log(merge(input1, input2, "name"));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71534849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档