代码之家  ›  专栏  ›  技术社区  ›  Simon Hagmann

如何合并2个javaScript数组?

  •  -1
  • Simon Hagmann  · 技术社区  · 9 年前

    我有两个阵列。

    我想将第二个数组中的字段值与第一个数组合并。

    每个值(即“测试”)都属于第二阵列的_embedded部分(_embedded.profileField.id)中列出的Profile Field id。

    第一个阵列:配置文件字段

    0: Object
    field: "FieldLabel1"
    id: 1
    
    1: Object
    field: "FieldLabel2"
    id: 7
    
    2: Object
    field: "FieldLabel3"
    id: 12
    

    第二个数组:配置文件字段值

    0: Object
    id: 1
    value: "Test"
    _embedded: Object
      profileField: Object
        field: "FieldLabel1"
        id: 1
    
    1: Object
    id: 2
    value: "links"
    _embedded: Object
      profileField: Object
        field: "FieldLabel2"
        id: 7
    

    我如何将两个信息一起得到一个数组?

    2 回复  |  直到 9 年前
        1
  •  0
  •   Vasyl    9 年前

    使用 map filter 从…起 Array methods 您可以根据需要的条件合并此数组。请参见以下示例:

    /* your arrays definition */
    var a = [{
      field: "FieldLabel1",
      id: 1
    }, {
     field: "FieldLabel2",
     id: 7
    }, {
      field: "FieldLabel3",
      id: 12
    }
    ];
    
    var b = [{
      id: 1,
      value: "Test",
      _embedded: {
      profileField: {
          field: "FieldLabel1",
          id: 1
        }
      }
    }, {
      id: 2,
      value: "links",
      _embedded: {
      profileField: {
          field: "FieldLabel2",
          id: 7
        }
      }
    }];
    
    /* mergedArray contains merged data from two arrays arranged by id */ 
    var mergedArray = a.map(function(aItem){ 
      var value = b.filter(function(bItem) {
        return aItem.id === bItem._embedded.profileField.id;
      }).map(function(item){
        return item.value;
      }).pop();
      aItem.value = value;
      return aItem; 
    });
    

    结果是:

    margedArray: Array[3]
    0: Object
        field: "FieldLabel1"
        id: 1
        value: "Test"
    1: Object
        field: "FieldLabel2"
        id: 7
        value: "links"
    2: Object
       field: "FieldLabel3"
       id: 12
       value: undefined
    
        2
  •  -1
  •   Vinod Patidar    9 年前

    嗨,只需使用Jquery,请参阅下面的代码!

    对于阵列:

    var newArray = $.merge(1Array, 2Array);
    

    对于对象:

    var object = $.extend({}, object1, object2);
    

    对于阵列: jquery merge array

    对于对象: jquery merge object

    谢谢