[英]Javascript - Best way to create array with unique elements from another array
[英]Best way to search list of elements from javascript array
下面是我要搜索名称“ gali”,“ john”和“ joe”的数组
var dummyArray = [{
"fname": "gali",
"lname": "doe"
}, {
"fname": "john",
"lname": "danny"
}, {
"fname": "joe",
"lname": "dawns"
}, {
"fname": "liji",
"lname": "hawk"
}]
一种方法是使用grep和$ .each
var searchcriteria['gali','john','joe'];
var newArray = [];
$(searchcriteria).each(function( index ) {
var item= j$.grep(dummyArray , function(dt) {
return (dt.fname== searchcriteria[index]);
});
newArray.push(item);
});
有更好的方法吗?
结合使用原生JavaScript filter()
方法和indexOf()
var dummyArray = [{ "fname": "gali", "lname": "doe" }, { "fname": "john", "lname": "danny" }, { "fname": "joe", "lname": "dawns" }, { "fname": "liji", "lname": "hawk" }] var searchcriteria = ['gali', 'john', 'joe']; var newArray = dummyArray.filter(function(ele) { return searchcriteria.indexOf(ele.fname) > -1; }); console.log(newArray);
最好将搜索值存储在一个对象中,因为indexOf()
方法非常慢。
var dummyArray = [{ "fname": "gali", "lname": "doe" }, { "fname": "john", "lname": "danny" }, { "fname": "joe", "lname": "dawns" }, { "fname": "liji", "lname": "hawk" }] var searchcriteria = {'gali':true, 'john':true, 'joe':true}; var newArray = dummyArray.filter(function(ele) { return searchcriteria[ele.fname]; }); console.log(newArray);
您可以使用.filter
var dummyArray = [{
"fname": "gali",
"lname": "doe"
}, {
"fname": "john",
"lname": "danny"
}, {
"fname": "joe",
"lname": "dawns"
}, {
"fname": "liji",
"lname": "hawk"
}];
var searchcriteria = ['gali','john','joe'];
var output = dummyArray.filter(function(x){
return searchcriteria.indexOf(x.fname)!=-1
});
console.log(output)
您可以将Array#filter
和Array#includes
与箭头函数一起使用 。
dummyArray.filter(o => searchcriteria.includes(o.fname));
var dummyArray = [{ "fname": "gali", "lname": "doe" }, { "fname": "john", "lname": "danny" }, { "fname": "joe", "lname": "dawns" }, { "fname": "liji", "lname": "hawk" }]; var searchcriteria = ['gali', 'john', 'joe']; var result = dummyArray.filter(o => searchcriteria.includes(o.fname)); console.log(result);
对于不支持EcmaScript 6的旧版浏览器,等效代码为
dummyArray.filter(function (o) {
return searchcriteria.indexOf(o.fname) !== -1;
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.