我在下面有一个数组:
const resultthisData = [ [ '7', '8', '9', 'FIXED', 'BUT', 'FX', 'KFY', '200' ],
[ '9', 'FIXED', 'BUT', 'FZ', 'MX', 'KFY', '150', 'KMZ', '200' ] ]
for (var i = 0; i < resultthisData.length; i++) {
var newArray = resultthisData[i].indexOf('FIXED');
var theLastIndex = resultthisData[i].slice(0, newArray);
var fixed_Supports = theLastIndex.map(elm => {
var result_FixedSupports = {
'0': Number(elm),
'1': 0
};
return result_FixedSupports;
});
console.log(fixed_Supports);
}
结果是这样
[ { '0': 7,'1': 'RFFFFF'},{ '0': 8,'1': 'RFFFFF'},{ '0': 9,'1': 'RFFFFF'}]
[ { '0': 9,'1': 'FFRRFF',} ]
我如何结合这两个?我正在尝试实现以下目标:
[ { '0': 7,'1': 'RFFFFF'},{ '0': 8,'1': 'RFFFFF'},
{ '0': 9,'1':'RFFFFF'}{ '0': 9,'1': 'FFRRFF',} ]
如何将主题组合为一个数组?我似乎无法使用concat
。现在,我正在尝试通过使用推来解决它。但我无法弄清楚
答案 0 :(得分:1)
由于输入数组有2个项目,而输出数组只有1个项目,您可能应该使用reduce
简化为一个数组:
const resultthisData = [ [ '7', '8', '9', 'FIXED', 'BUT', 'FX', 'KFY', '200' ],
[ '9', 'FIXED', 'BUT', 'FZ', 'MX', 'KFY', '150', 'KMZ', '200' ] ]
const output = resultthisData.reduce((a, subarr) => {
var newArray = subarr.indexOf('FIXED');
subarr.slice(0, newArray)
.forEach(elm => a.push({
'0': Number(elm),
'1': 0
}));
return a;
}, []);
console.log(output);
reduce
是用于将数组转换为单个对象(包括与原始数组不是一对一的另一个数组)的正确方法,但是如果您< em>拥有,您可以继续使用for
循环(通常不是一个好主意-for
循环不提供自动抽象,需要手动迭代,不可组合,并且与var
一起使用时有起吊问题:
const resultthisData = [ [ '7', '8', '9', 'FIXED', 'BUT', 'FX', 'KFY', '200' ],
[ '9', 'FIXED', 'BUT', 'FZ', 'MX', 'KFY', '150', 'KMZ', '200' ] ]
const output = [];
for (let i = 0; i < resultthisData.length; i++) {
const subarr = resultthisData[i];
const newArray = subarr.indexOf('FIXED');
subarr.slice(0, newArray)
.forEach(elm => output.push({
'0': Number(elm),
'1': 0
}));
}
console.log(output);
答案 1 :(得分:1)
您可以使用嵌套的for循环:
const resultthisData = [ [ '7', '8', '9', 'FIXED', 'BUT', 'FX', 'KFY', '200' ],
[ '9', 'FIXED', 'BUT', 'FZ', 'MX', 'KFY', '150', 'KMZ', '200' ] ];
var result = [];
for(var i = 0; i < resultthisData.length; i++){
var newArrayLength = resultthisData[i].indexOf("FIXED");
for(var j = 0; j < newArrayLength; j++){
result.push({
"0" : Number(resultthisData[i][j]),
"1" : 0
});
}
}
console.log(result);