数组的Javascript合并
我有一个如下形式的数组myData数组的Javascript合并,javascript,jquery,Javascript,Jquery,我有一个如下形式的数组myData "myData": [{ "items": [{ "attr1": "someInfoBatch1", "attr2": "someOtherInfoBatch1" }], "someStates": [ "STATE_PASS_1" ] },{ "items": [{ "attr1": "someInfoBatch2", "attr2": "someOtherIn
"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,另一个数组。但是你在这里展示的不是合并本身。你能补充一点解释吗?