从`for Loop`合并两个分离的数组

时间:2018-07-05 04:34:15

标签: javascript arrays

我在下面有一个数组:

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。现在,我正在尝试通过使用推来解决它。但我无法弄清楚

2 个答案:

答案 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);