首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >javascript过滤器对象数组

javascript过滤器对象数组
EN

Stack Overflow用户
提问于 2012-11-28 07:02:32
回答 7查看 173.8K关注 0票数 93

我有一个对象数组,我想知道搜索它的最佳方法。给出下面的例子,我如何搜索name = "Joe"age < 30?有没有什么jQuery可以帮忙的,或者我必须自己暴力破解这个搜索?

代码语言:javascript
复制
var names = new Array();

var object = { name : "Joe", age:20, email: "joe@hotmail.com"};
names.push(object);

object = { name : "Mike", age:50, email: "mike@hotmail.com"};
names.push(object);

object = { name : "Joe", age:45, email: "mike@hotmail.com"};
names.push(object);
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-11-28 07:04:38

使用Array.prototype.filter()的现代解决方案

代码语言:javascript
复制
const found_names = names.filter(v => v.name === "Joe" && v.age < 30);

或者,如果您仍在使用jQuery,则可以使用jQuery.grep()

代码语言:javascript
复制
var found_names = $.grep(names, function(v) {
    return v.name === "Joe" && v.age < 30;
});
票数 142
EN

Stack Overflow用户

发布于 2012-11-28 07:05:52

您可以使用[].filter方法非常轻松地完成此操作:

代码语言:javascript
复制
var filterednames = names.filter(function(obj) {
    return (obj.name === "Joe") && (obj.age < 30);
});

你可以在this MDN page上了解更多关于它的信息。

票数 81
EN

Stack Overflow用户

发布于 2014-09-26 15:50:32

您可以利用jQuery.filter()函数从匹配元素的子集返回元素。

代码语言:javascript
复制
var names = [
    { name : "Joe", age:20, email: "joe@hotmail.com"},
    { name : "Mike", age:50, email: "mike@hotmail.com"},
    { name : "Joe", age:45, email: "mike@hotmail.com"}
   ];
   
   
var filteredNames = $(names).filter(function( idx ) {
    return names[idx].name === "Joe" && names[idx].age < 30;
}); 

$(filteredNames).each(function(){
     $('#output').append(this.name);
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="output"/>

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13594788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档