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}如果你测量从创建数组开始的时间,可能是,将其转换为贴图,然后执行查找,与引用对象而不是数组相比,我认为结果会非常清楚……我认为将数组转换为贴图不会带来太多性能提升。从性能角度看,你是对的。在编写代码的意义上,不是。