forEach的简写/运算符,map?

时间:2016-02-26 05:05:53

标签: javascript

是否有访问对象数组属性的简写?

let o = [
  {id: 1},
  {id: 2},
  {id: 3}
];

o.map(item => item.id); // [1, 2, 3]

取而代之的是某种简写形式:

o[].id; // [1, 2, 3]

如果没有,是否建议将来添加这样的东西?

1 个答案:

答案 0 :(得分:0)

这几乎可以实现我的目标:

Object.defineProperty(Array, 'all', {
    value: function(array) {
        let allProperties = new Set();
        let methods = {};

        array.forEach(o => {
            if(!(o instanceof Object)) return;

            Object.keys(o).forEach(property => {
                allProperties.add(property);
            });
        });

        allProperties.forEach(property => {
            methods[property] = array.map(o => {
                if(!(o instanceof Object)) return o;

                return o[property];
            });
        });

        return methods;
    }
});

那样:

let o = [
  {id: 1},
  {id: 2},
  null,
  {num: 3}
];

Array.all(o).id; // [1, 2, null, undefined]

它还可以扩展Array.prototype,以便o.all.id返回相同的内容。