JS更好的方法是将数组转换为半长的对象数组

时间:2018-03-12 21:35:54

标签: javascript

我尝试将50个数字的数组转换为包含两个属性prop1和prop2的25个元素的数组,其中包含偶数和奇数。

我已经编写了正常运行的代码

/* jshint esversion: 6 */

const numbers = [...Array(50).keys()];

const total = {
  evens: numbers.filter(f => f % 2 === 0),
  odds: numbers.filter(f => f % 2 === 1)
};

const res1 = [...Array(numbers.length/2).keys()].map( (r, i) => {
  return {
    even: total.evens[i],
    odd: total.odds[i]
  };
});

console.log('Res:',res1);

但我想知道是否有更有效的方法来做到这一点。

由于

3 个答案:

答案 0 :(得分:0)



const numbers = [...Array(25).keys()].map(x => ({
      even: x * 2,
      odd: (x * 2)+1
    }));

    console.log('Res:', numbers);




它符合您的要求吗?

答案 1 :(得分:0)



const numbers = [...Array(25).keys()].map((x,i) => ({
      even: i * 2,
      odd: (i * 2)+1
    }));

    console.log('Res:', numbers);




答案 2 :(得分:0)

当然,您可以进一步自动化,并可以轻松添加其他属性。只需在props数组中添加或删除一个,然后查看集合显示的内容:

let size = 50,
  props = ['even', 'odd', 'third'],
  propsLength = props.length;
size = Math.ceil(size / propsLength);

const collection = [...Array(size).keys()].map((v, i) => {
  let o = {}
  props.forEach((pv, pi) => o[props[pi]] = (i * propsLength) + pi);
  return o;
});

console.log(collection);