数组的Javascript合并

数组的Javascript合并,javascript,jquery,Javascript,Jquery,我有一个如下形式的数组myData "myData": [{ "items": [{ "attr1": "someInfoBatch1", "attr2": "someOtherInfoBatch1" }], "someStates": [ "STATE_PASS_1" ] },{ "items": [{ "attr1": "someInfoBatch2", "attr2": "someOtherIn

我有一个如下形式的数组myData

"myData": [{
    "items": [{
        "attr1": "someInfoBatch1",
        "attr2": "someOtherInfoBatch1"
    }],
    "someStates": [ "STATE_PASS_1" ]
},{
    "items": [{
        "attr1": "someInfoBatch2",
        "attr2": "someOtherInfoBatch2"
    }],
    "someStates": [ "STATE_PASS_1", "STATE_FAILED_1" ]
}]
现在我想根据某些州的值合并myData.items

因此,如果某些州在一个批次中包含pass,而在另一个批次中包含failed,即STATE_failed_1,则我希望myData.items分开,即myData.item[0]和myData.item[1]

但是假设在上面的例子中,一些状态只包含如下所示的已传递状态;对于第一批某些州:[州\通过\ 1] &对于第二批某些州:[州\通过\ 1,州\通过\ 2]

在上述情况下,我需要将myData.items合并到一个数组中,如下所示

"items": [{
    "attr1": "someInfoBatch1",
    "attr2": "someOtherInfoBatch1"
},{
    "attr1": "someInfoBatch2",
    "attr2": "someOtherInfoBatch2"
}]

可以在一行中使用下划线,如:uu.pullMyData,items


请参见

score.js:

  // Return the results of applying the iteratee to each element.
  var map = function(obj, iteratee, context) {
    iteratee = cb(iteratee, context);
    var keys = !isArrayLike(obj) && _.keys(obj),
        length = (keys || obj).length,
        results = Array(length);
    for (var index = 0; index < length; index++) {
      var currentKey = keys ? keys[index] : index;
      results[index] = iteratee(obj[currentKey], currentKey, obj);
    }
    return results;
  };

  var property = function(key) {
    return function(obj) {
      return obj == null ? void 0 : obj[key];
    };
  };
调用:var items=mapmyData,propertyitems

你可以用它

var$scope={myData:[{items:[{attr1:someInfoBatch1,attr2:someOtherInfoBatch1}],someStates:[STATE\u PASS\u 1]},{items:[{attr1:someInfoBatch2,attr2:someOtherInfoBatch2}],someStates:[STATE\u PASS\u 1,STATE\u FAILED\u 1]}, items=$scope.myData.mapfunction a{ 返回a.items[0]; };
console.logitems;不确定这两行在您的示例中到底有多大不同。按照您的描述:一般来说,只需为myData编写您自己的映射程序,使用.somestatePassFlag=>{/^STATE\u FAILED/.teststatePassFlag}检查每个后续对象someStates值,但是否可以合并这两个数组?当然可以:[].push.ApplyOnArr,另一个数组。但是你在这里展示的不是合并本身。你能补充一点解释吗?