【问题标题】:Concat with merged ObjectsConcat 与合并的对象
【发布时间】:2018-11-29 14:16:58
【问题描述】:

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

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

现在我也想或多或少地做这些。但不是

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

我想得到

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

为了获得独特的连接,有很多东西可以找到(例如https://github.com/thlorenz/unique-concat),但我最终还是会得到 2 个人的对象。您是否知道任何框架可以做到这一点,或者您能想出一种开箱即用的精简方式吗?

【问题讨论】:

  • 感谢您的快速回复。一件事我忘了提。我需要一个非常通用的方法。所以对象不会一直是人,而是可以是任意随机Key,数组中的字符串也可以变化

标签: javascript arrays merge concat


【解决方案1】:

既然你提到你有两个对象,没有必要使用任何其他插件或脚本。只需使用 spread syntax 作为...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);

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      要处理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);

      【讨论】:

        猜你喜欢
        • 2018-07-06
        • 2021-04-21
        • 1970-01-01
        • 2016-03-16
        • 1970-01-01
        • 2017-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多