请考虑以下代码:
var input = [{x: 1, y: 6}, {x: 4, y: 3}, {x: 9, y: 2}];
var output = convert(input);
console.log(output); // = [1, 6, 4, 3, 9, 2]
我能编写的最简短,最简洁的convert
函数会给我output
显示的内容吗?
到目前为止,我已经提出以下建议:
function convert(input) {
var output = [];
input.forEach(function(obj) {
output.push(obj.x, obj.y);
});
return output;
}
但肯定有一种很好的单行方式吗?
答案 0 :(得分:3)
使用Array.prototype.reduce
方法,它将为您节省两行代码:
function convert(arr) {
return arr.reduce(function(prev, curr) {
return prev.concat(curr.x, curr.y);
}, []);
}
var input = [{x: 1, y: 6}, {x: 4, y: 3}, {x: 9, y: 2}];
document.write(JSON.stringify( convert(input) ));