遍历对象数组并获取特定键的最快方法

时间:2019-01-25 09:28:40

标签: javascript

说我有这个数组:

Dogs = [
    {Name: 'Sparky', OwnerID: 1},
    {Name: 'Pooch', OwnerID: 2},
    {Name: 'Sneak', OwnerID: 1}
]

对我而言,最快的方法是什么?

dogNames = Dogs.map(element => element.Name);

我只是想知道是否有这样的东西:

dogNames = Dogs[...Name];

2 个答案:

答案 0 :(得分:1)

您可以将通配符封闭在地图上,该映射仅是单个属性的结果。

const only = k => o => o[k];

var dogs = [{ Name: 'Sparky', OwnerID: 1 }, { Name: 'Pooch', OwnerID: 2 }, { Name: 'Sneak', OwnerID: 1 }],
    dogNames = dogs.map(only('Name'));
    
console.log(dogNames);

答案 1 :(得分:0)

这取决于您所说的“最快”。你是说执行时间?打字最快?最容易理解?

当您所说的是“最快输入”和“最容易理解”时,我想说的是array.map(x => x.prop)之类的东西可能是最快的。除了删除变量和属性名称之外,您可能会找到一种更短的键入方式,但是我想不到。

就执行时间而言,大多数人认为使用循环是最快的方法:

let names = [];
for (let i = 0; i < dogs.length; i += 1) {
  names[i] = dogs[i].Name;
}

我个人而言,我尽可能避免循环,并坚持使用mapfilterreduce –老实说,主要是因为大多数项目 my 的执行时间比我的 script 的执行时间更昂贵。

无论如何,由您决定。