我尝试将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);
但我想知道是否有更有效的方法来做到这一点。
由于
答案 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);