Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过对象数组循环并获取特定键的最快方法_Javascript - Fatal编程技术网

Javascript 通过对象数组循环并获取特定键的最快方法

Javascript 通过对象数组循环并获取特定键的最快方法,javascript,Javascript,假设我有这个数组: Dogs = [ {Name: 'Sparky', OwnerID: 1}, {Name: 'Pooch', OwnerID: 2}, {Name: 'Sneak', OwnerID: 1} ] 我最快的方法是什么: dogNames = Dogs.map(element => element.Name); 我只是想知道是否有这样的事情: dogNames = Dogs[...Name]; 您可以对想要的键进行闭包,只映射单个属性的结果

假设我有这个数组:

Dogs = [
    {Name: 'Sparky', OwnerID: 1},
    {Name: 'Pooch', OwnerID: 2},
    {Name: 'Sneak', OwnerID: 1}
]
我最快的方法是什么:

dogNames = Dogs.map(element => element.Name);
我只是想知道是否有这样的事情:

dogNames = Dogs[...Name];

您可以对想要的键进行闭包,只映射单个属性的结果

const only=k=>o=>o[k];
var dogs=[{Name:'Sparky',OwnerID:1},{Name:'Pooch',OwnerID:2},{Name:'sleek',OwnerID:1}],
dogNames=dogs.map(仅('Name');

console.log(dogNames)这取决于你所说的“最快”是什么意思。你是说执行时间吗?打字最快?最容易理解

如果你的意思是“打字最快”和“最容易理解”,那么我宁愿说像
array.map(x=>x.prop)
可能是最快的。除了删除变量名和属性名之外,您可能会找到一种更短的方法来键入它,但我想不出一种方法

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

let names = [];
for (let i = 0; i < dogs.length; i += 1) {
  names[i] = dogs[i].Name;
}
let name=[];
对于(设i=0;i<0.length;i+=1){
名称[i]=狗[i]。名称;
}
就个人而言,我尽可能避免循环,坚持使用
map
filter
reduce
——老实说,这主要是因为对于大多数项目,我的执行时间比脚本的执行时间要贵


无论如何,这取决于你。

狗.map(element=>element.Name)有什么问题吗?
?你可以做
Dogs.map(({Name})=>Name)
,但这并没有多大的改进。你建议的语法不可能
Name
不知道是否可以传播。@adiga我觉得这是
[…]
的用法@NinaScholz这只是一个例子…名字是唯一的吗?为什么不创建一个关联数组/对象呢?完全去掉数组,只创建一个大对象。然后它只是Dogs['Sparky'],在这里,你的对象会变成{'Sparky':1,'Pooch':2,'sleek':1}如果你测量从创建数组开始的时间,可能是,将其转换为贴图,然后执行查找,与引用对象而不是数组相比,我认为结果会非常清楚……我认为将数组转换为贴图不会带来太多性能提升。从性能角度看,你是对的。在编写代码的意义上,不是。