我有两个数组:
Array1 = [
[{
index: '1',
value: '100'
}, {
index: '2',
value: '200'
}],
[{
index: '1.1',
value: '100'
}, {
index: '1.2',
value: '200'
}]
];
Array2 = [
[{
index: '10',
value: '100'
}, {
index: '20',
value: '200'
}],
[{
index: '10.1',
value: '100'
}, {
index: '10.2',
value: '200'
}]
]
我如何连接两个数组,以便最终的数组为
ResultArray = [
[{
index: '1',
value: '100'
}, {
index: '2',
value: '200'
}, {
index: '10',
value: '100'
}, {
index: '20',
value: '200'
}],
[
[{
index: '1.1',
value: '100'
}, {
index: '1.2',
value: '200'
}], {
index: '10.1',
value: '100'
}, {
index: '10.2',
value: '200'
}
]
]
预先感谢
答案 0 :(得分:0)
正如评论所说,您可能需要根据索引是整数字符串还是浮点字符串来分隔它们。
这是一个如何进行分离的示例。
Array1 = [
[{
index: '1',
value: '100'
}, {
index: '2',
value: '200'
}],
[{
index: '1.1',
value: '100'
}, {
index: '1.2',
value: '200'
}]
];
Array2 = [
[{
index: '10',
value: '100'
}, {
index: '20',
value: '200'
}],
[{
index: '10.1',
value: '100'
}, {
index: '10.2',
value: '200'
}]
]
ResultArray = [[],[]];
// first combine all of the elements.
var arr = [];
[...Array1, ...Array2].forEach(function(el){
arr.push(...el);
})
// check all elements and set to result array
arr.forEach(function(el){
// check whether it is integer or not to set to index 0 or 1
// if Number(el.index) is integer, mod 1 will equal to 0, else it is float.
var val = Number(el.index);
if(val % 1 === 0)
ResultArray[0].push(el);
else
ResultArray[1].push(el);
})
console.log(ResultArray);
答案 1 :(得分:0)
这可以提高效率,但为简单起见,它分为两个步骤。第一步是将所有对象展平为一个数组。第二种是根据它们的 index 值(整数与浮点数)将它们的内容分为一个数组:
user-service.ts
答案 2 :(得分:0)
只需连接源数组,然后遍历它们。在每次迭代中,检查index
是浮点数还是整数,并根据决策将结果推送到单独的数组中。
var arr1= [[{index:'1',value:'100'},{index:'2',value:'200'}],[{index:'1.1',value:'100'},{index:'1.2',value:'200'}]];
var arr2 = [[{index:'10',value:'100'},{index:'20',value:'200'}],[{index:'10.1',value:'100'},{index:'10.2',value:'200'}]];
var ints = [],
floats = [];
function classify(items) {
items.forEach(item => (/^\d+$/.test(item.index) ? ints : floats).push(item));
}
arr1.concat(arr2).forEach(classify);
console.log([ints, floats]);
答案 3 :(得分:-1)
仅当Array1和Array2具有相同的大小时,此代码才有效。该代码根据各自的键组合Array1和Array2中的对象。
var arr = [];
for (var i = 0; i < Array1.length; i++){
arr.push(Array1[i].concat(Array2[i]));
}
console.log(arr);