与合并对象连接

问题描述 投票:0回答:3

我想知道是否有一种或多或少开箱即用的方法来完成以下操作。我可以自己写,但如果有一种新的方法可以做到这一点,我会更喜欢。我有 2 个或更多数组。该数组的每个条目可以包含一个字符串或一个对象,其中也将包含一个数组作为值。像这样

var arr1 = ["Title", {Person: ["Name", "Age"]}]
var arr2 = ["Title", {Person: ["Sex]}]

现在我也想做或多或少的一些串联。但不是

["Title", "Title" , {Person : ["Name", "Age"]},{Person, ["Sex"]}]

我想得到

["Title", {Person: ["Name", "Age", "Sex"]}]

为了获得独特的 concat,有很多东西可以找到(例如 https://github.com/thlorenz/unique-concat),但我最终仍然会得到 2 人对象。你知道有什么框架可以做到这一点吗?或者你能想出一种开箱即用的精益方法吗?

javascript arrays merge concatenation
3个回答
2
投票

既然您提到您有两个对象,则无需使用任何其他插件或脚本。只需使用 spread 语法 作为

...arr2[1].Person
将这些值推入
arr1
:

var arr1 = ["Title", {Person: ["Name", "Age"]}]
var arr2 = ["Title", {Person: ["Sex"]}]
arr1[1].Person.push(...arr2[1].Person);
console.log(arr1);


1
投票

另一种选择是使用 ES6,数组扩展。

arr1[1].Person = [...arr1[1].Person, ...arr2[1].Person];

0
投票

为了应对

unique
位,您可以使用
Set

例如..

var arr1 = ["Title", {Person: ["Name", "Age"]}]
var arr2 = ["Title", {Person: ["Sex", "Age"]}]
arr1[1].Person = Array.from(
  new Set([...arr2[1].Person, ...arr1[1].Person])
);
console.log(arr1);

© www.soinside.com 2019 - 2024. All rights reserved.