查找对象数组(Angularjs)中是否存在值
Find if values exists in an array of object (Angularjs)
我很难做到这一点。如果有人能帮助我解决这个问题,我会很高兴。
0: Object
Name: Ria
Age: 27
Sex: Female
1: Object
Name: Brian
Age: 23
Sex: Male
2: Object
Name: Rick
Age: 32
Sex: Male
下面是对象的数组。我正在传递用户输入的值。例如,我要求用户输入名称。输入后,我需要签入上面的对象数组,如果 Name 存在于对象数组中。
我尝试了使用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;
如果您要检索大量用户,它的性能应该更好。
我希望当用户出现在 数据库或否则结果为最初定义的 false。
是的,但请注意,调用 search
会再次设置变量result
。也就是说,永远不会保留初始false
。
为了扩展 Matias 的答案,只要您不需要与您的谓词匹配的项目,some
就非常适合这项工作。 some
接受上下文作为第二个参数:
result = myArray.some(function(user) {
return user.name === this.name;
}, $scope.data); //pass $scope.data as this
如果要跟踪与谓词匹配的项,则有以下几种选择:创建索引对象或使用forEach
或while
遍历数组
var index = myArray.map(function(item) {
return item.name;
}).indexOf(nameKey);
var item = myArray[index];
var l = myArray.length;
var found = false;
while(!found && l--) {
found = myArray[l].name === nameKey;
}
var item = myArray[l];
使用 lodash.js.您可以使用给定参数过滤数组。
例如:
var givenJson ={ Name: Ria,Age: 27,Sex: Female};// this is the whole array
var response= _.filter(givenJson, function(data){
return data.name == "Ria";
});
if(response != null && response != undefined){
return true;
}
相关文章:
- 用于检查数组中是否存在元素的javascript自定义方法
- 是否存在React Native“;WEB代码安全防护”;
- 验证会话中是否存在对象's数组
- 如何查找值是否存在于二叉树中
- 检查是否存在使用chrome扩展的javascript库
- 是否存在Javascript Liferay Service库的文档?如何处理错误情况
- 测试mongo脚本中是否存在参数
- 检查搜索结果是否存在多次如果是,则在Javascript中只显示一个结果
- 检查数组中是否存在字符串值,并返回找到的数组值js
- 如何通过json对象选项卡中的Id来检查对象是否存在
- 检查是否存在任意控制器/操作
- Javascript滑块不滑动,如何判断是否存在JS冲突
- 根据手机上是否存在文件,在jQuery mobile中动态填充列表视图
- javascript测试是否存在两个标志中的任何一个
- 如何使用javascript检查移动sd卡中是否存在文件
- 当提供函数名称时,检查函数是否存在于同一作用域中
- 需要帮助使用JQuery.inArray()检查值是否存在
- 确定元素是否存在
- 使用javascript检查服务器上是否存在html文件
- 是否存在类似ExtJS 4的框架;正常的“;网站