基于数组的索引将项添加到对象中的数组

时间:2018-06-10 21:44:34

标签: javascript ecmascript-6

我正在抓取一个网站并拥有一系列我正在循环的数字:

const arr = [1,2,3,1,2,4,5,6,7];

它们对应于不同球队的赢/输/抽奖:

数组中的第1项获胜,第二项是平局,第三项是亏损,第四项是赢,第五项是平局,第六项是亏损等。

我如何循环使用这些,所以我有以下内容:

const teams = [{
  won: 1,
  draw: 2,
  lost: 3
 },{ 
  won: 1,
  draw: 2,
  lost: 4
 },{
  won: 5,
  draw: 6,
  lost: 7
}];

我尝试了类似下面的内容,但它没有像我预期的那样工作。

   const arr = [1, 2, 3, 1, 2, 4, 5, 6, 7];

const newArr = [];

arr.forEach((item, index => {
   if (index % 0 === 0) {
     newArr.push({
       won: item
     });

   } else if (index % 1 === 0) {
     newArr.push({
       draw: item
     });
   } else {
     newArr.push({
       lost: item
     });
    }
 });

3 个答案:

答案 0 :(得分:2)

不幸的是,使用像forEach这样的数组方法不会很好,因为你需要将多个数组元素合并到一个对象中。这是可能的,但这会有点令人困惑。如果使用for循环可能会更清楚:



const arr = [1,2,3,1,2,4,5,6,7];
const teams = [];
for (let i = 0; i < arr.length; i += 3) {
  teams.push({
    won: arr[i],
    draw: arr[i + 1],
    lost: arr[i + 2],
  });
}

console.log(teams);
&#13;
&#13;
&#13;

答案 1 :(得分:1)

你想要

index % 3 === 0; // 0, 3, 6, ...
index % 3 === 1; // 1, 4, 7, ...
index % 3 === 2; // 2, 5, 8, ...

答案 2 :(得分:1)

您可以循环遍历数组,但只能使用i+=3来考虑每个第三个元素:

let teams = [];
function teamStats(won, draw, lost){
  return {won, draw, lost};
}
for(let i = 0; i < arr.length; i+=3){
  teams.push(teamStats(arr[i], arr[i+1], arr[i+2]));
}