gpt4 book ai didi

javascript - 是否有更有效的方法来选择对象数组中的特定对象

转载 作者:行者123 更新时间:2023-11-29 17:29:05 26 4
gpt4 key购买 nike

给定以下数据结构

var things = [{ "name": "thing1", "sex": "male"},
{ "name": "thing2", "sex": "female"}];

我希望能够搜索该对象数组并提取特定对象。

我目前编写了以下代码

function selectElementByName (name) { 

var returnObject;

for (var i = 0; i < things.length; i++) {

if (things[i].name === name) {

returnObject = things[i];
}
}


if ( returnObject === undefined) {
console.log("Object not found");
}

return returnObject;
}

可以找到JsFiddle here

有没有更有效的方法?

最佳答案

您可以在找到对象时提前退出,这样您就不必遍历数组的其余部分:

function selectElementByName(name) { 
for (var i = 0; i < things.length; i++) {
if (things[i].name === name) {
return things[i];
}
}
console.log("Object not found");
}

(然而,如果存在重复项,这将改变行为,因此它返回找到的第一个对象而不是最后一个。)


如果名称是唯一的,您可以将它们用作键并将对象存储在对象中而不是数组中:

var things = {
"thing1": { "name": "thing1", "sex": "male"},
"thing2": { "name": "thing2", "sex": "female"}
};

那么你就不需要循环查找对象了:

function selectElementByName(name) { 
return things[name];
}

如果您需要数组中的对象,如果数组不经常更改,您仍然可以创建一个索引来搜索:

var thingsNameIndex = {};
for (var i = 0; i < things.length; i++) {
thingsNameIndex[things[i].name] = i;
}

现在您可以使用索引来查找对象:

function selectElementByName(name) { 
return things[thingsNameIndex[name]];
}

由于您必须在数组更改后立即更新或重新创建索引,因此只有当您在数组中搜索的频率远高于更改数组的频率时,这才有用。

关于javascript - 是否有更有效的方法来选择对象数组中的特定对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6099666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com