gpt4 book ai didi

javascript - 查找对象数组中是否存在值(Angularjs)

转载 作者:行者123 更新时间:2023-12-03 07:29:34 25 4
gpt4 key购买 nike

我很难把这件事做好。如果有人能帮助我找到解决方案,我会很高兴。

0: Object
Name: Ria
Age: 27
Sex: Female

1: Object
Name: Brian
Age: 23
Sex: Male

2: Object
Name: Rick
Age: 32
Sex: Male

这是对象数组。我正在传递用户输入的值。例如我要求用户输入名称。输入后,我需要检查上面的对象数组,如果名称存在于对象数组中。

我使用 foreach、基本数组迭代尝试了各种解决方案,但找不到方法。

这是我上次尝试过的...

var result = false;

function search(nameKey, myArray) {
for (var i = 0; i < myArray.length; i++) {
if (myArray[i].Name === nameKey) {
return true;
}
}
}

result = search($scope.data.name, checkdatabase);

在这里,checkdatabase是对象数组并且 $scope.data.name是用户输入的值。我期望结果的值为 true当用户存在于数据库中或结果为 false 时这是最初定义的。

最佳答案

您需要的是 Array.prototype.some :

result = myArray.some(function(user) { return user.name === $scope.data.name; });

顺便说一句,这只是一个建议:我将存储用户名索引并使用 Array.prototype.indexOf .

每当添加用户时,都可以将名称添加到数组中:

var userNameIndex = [];
var users = [];

users.push(user);
// I've called .toLowerCase() so the index isn't case sensitive
userNameIndex.push(user.Name.toLowerCase().trim());

...您可以检查用户是否已添加,如下所示:

// I've called .toLowerCase() to perform a case insensitive search
var result = userNameIndex.indexOf($scope.data.name.toLowerCase().trim()) > -1;

如果您检索大量用户,它的性能应该会更好。

I am expecting the value of result as true when user is present in database or else result as false which is defined initially.

是的,但请注意,调用 search 会再次设置变量 result。也就是说,最初的 false 永远不会被保留。

关于javascript - 查找对象数组中是否存在值(Angularjs),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35854902/

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