我有一个对象数组,我想知道搜索它的最佳方法。给出下面的例子,我如何搜索name = "Joe"
和age < 30
?有没有什么jQuery可以帮忙的,或者我必须自己暴力破解这个搜索?
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);
发布于 2012-11-28 07:04:38
使用Array.prototype.filter()
的现代解决方案
const found_names = names.filter(v => v.name === "Joe" && v.age < 30);
或者,如果您仍在使用jQuery,则可以使用jQuery.grep()
var found_names = $.grep(names, function(v) {
return v.name === "Joe" && v.age < 30;
});
发布于 2012-11-28 07:05:52
您可以使用[].filter
方法非常轻松地完成此操作:
var filterednames = names.filter(function(obj) {
return (obj.name === "Joe") && (obj.age < 30);
});
你可以在this MDN page上了解更多关于它的信息。
发布于 2014-09-26 15:50:32
您可以利用jQuery.filter()函数从匹配元素的子集返回元素。
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);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="output"/>
https://stackoverflow.com/questions/13594788
复制相似问题