将对象数组转换为基元数组(从对象属性中提取)

时间:2015-03-14 09:57:05

标签: javascript arrays function object

请考虑以下代码:

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;
}

但肯定有一种很好的单行方式吗?

1 个答案:

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