是否有访问对象数组属性的简写?
let o = [
{id: 1},
{id: 2},
{id: 3}
];
o.map(item => item.id); // [1, 2, 3]
取而代之的是某种简写形式:
o[].id; // [1, 2, 3]
如果没有,是否建议将来添加这样的东西?
答案 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
返回相同的内容。