js追加对象,合并对象,数组转对象

js追加对象,合并对象,数组转对象

在一个对象中追加若干个对象

//当前格式
let a = {
  支付方式: "刷脸支付",
  订单号: "22222222222",
  时间: "2021-4-7 9:00:00",
  流水号: "001",
};
//最终格式
let t = {
  支付方式: "刷脸支付",
  订单号: "22222222222",
  时间: "2021-4-7 9:00:00",
  流水号: "001",
  品名: "寿喜烧:1份",
  品名: "鸡蛋包豆腐:2份",
  品名: "口水鸡:3份",
};

要追加进来的数据为数组对象,转成纯对象 用js的map方法

let b = [
  { name: "寿喜烧", num: "1" },
  { name: "鸡蛋包豆腐", num: "2" },
  { name: "口水鸡", num: "3" },
];

let obj = {};

b.map(function (e, item) {
  // console.log(e.name);
  obj[e.name] = e.num;
});

console.log(obj);

将两个对象合并 Object.assign

let obja = Object.assign(a,obj)

console.log(obja);
### JavaScript 中向对象数组合并追加另一个对象数组的方法 在 JavaScript 中,可以通过多种方式实现将一个对象数组合并追加到另一个对象数组的操作。以下是几种常见的方法及其具体实现: #### 方法一:使用 `Array.prototype.concat` 进行浅拷贝 `concat` 是一种简单的方式用于连接两个或更多数组,并返回一个新的数组[^4]。 ```javascript let array1 = [{ id: 1, name: "Alice" }, { id: 2, name: "Bob" }]; let array2 = [{ id: 3, name: "Charlie" }]; // 使用 concat 合并数组 let result = array1.concat(array2); console.log(result); // 输出: [ {id: 1, name: "Alice"}, {id: 2, name: "Bob"}, {id: 3, name: "Charlie"} ] ``` 此方法不会修改原始数组,而是返回一个新的数组。 --- #### 方法二:使用扩展运算符 (`...`) 扩展运算符是一种现代语法糖,能够轻松地展开数组并将它们合并成一个新的数组。 ```javascript let array1 = [{ id: 1, name: "Alice" }, { id: 2, name: "Bob" }]; let array2 = [{ id: 3, name: "Charlie" }]; // 使用扩展运算符合并数组 let result = [...array1, ...array2]; console.log(result); // 输出: [ {id: 1, name: "Alice"}, {id: 2, name: "Bob"}, {id: 3, name: "Charlie"} ] ``` 这种方法同样不会影响原数组的内容。 --- #### 方法三:使用 `push.apply` 或 `push(...)` 修改原数组 如果希望直接修改第一个数组,则可以利用 `apply` 或扩展运算符来调用 `push` 方法。 ```javascript let array1 = [{ id: 1, name: "Alice" }, { id: 2, name: "Bob" }]; let array2 = [{ id: 3, name: "Charlie" }]; // 使用 push 和 apply 修改原数组 Array.prototype.push.apply(array1, array2); console.log(array1); // 输出: [ {id: 1, name: "Alice"}, {id: 2, name: "Bob"}, {id: 3, name: "Charlie"} ] // 或者使用扩展运算符 array1.push(...array2); console.log(array1); // 输出相同结果 ``` 这种方式会直接更改 `array1` 的内容。 --- #### 方法四:基于条件过滤后的合并 当需要排除重复项或其他特殊逻辑时,可以结合自定义函数完成更复杂的合并需求[^2]。 ```javascript let array1 = [{ id: 1, name: "Alice" }, { id: 2, name: "Bob" }]; let array2 = [{ id: 2, name: "Bob" }, { id: 3, name: "Charlie" }]; function mergeUnique(arr1, arr2) { let seenIds = {}; return arr1.concat(arr2).filter(item => { if (!seenIds[item.id]) { seenIds[item.id] = true; return true; } return false; }); } let result = mergeUnique(array1, array2); console.log(result); // 输出: [ {id: 1, name: "Alice"}, {id: 2, name: "Bob"}, {id: 3, name: "Charlie"} ] ``` 上述代码实现了去重功能,在实际应用中可以根据业务场景调整判断依据。 --- #### 总结 以上四种方法分别适用于不同的场景: - 如果不希望改变原有数组,推荐使用 **`concat`** 或 **扩展运算符**; - 若允许修改源数组,可以选择 **`push.apply`** 或 **`push(...)`**; - 需要额外处理(如去除重复项),则需引入定制化逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值