array.filter()方法创建一个新的数组,符合指定条件的全部元素。它不会改变原来的数组,并且对空数组不进行检测。
应用:
(1)有一个对象对组A,获取数组中指定类型的对象存到另一个数组中。
var products = [
{
name:"cucunber",
type:"vegetable"
},{
name:"apple",
type:"fruit"
},{
name:"orange",
type:"fruit"
}
];
var list = products.filter(x => x.type === "fruit");
(2)有一个对象数组A,过滤出满足一定条件的对象
var products = [
{
name:"cucunber",
type:"vegetable",
quantity:10,
price:5
},{
name:"apple",
type:"fruit",
quantity:2,
price:5
},{
name:"orange",
type:"fruit",
quantity:1,
price:5
}
];
//找出数量大于0,价格小于10的水果
var list = products.filter(function(item) {
return item.type === "fruit" && item.quantity > 0 && item.price<10;
});
(3)有对象A和数组B,过滤出符合A属性值对应的对象
var post = { id: 1, title: "A" };
var comments = [
{ postId: 3, content: "CCC" },
{ postId: 2, content: "BBB" },
{ postId: 1, content: "AAA" }
];
function postId(post,comments) {
return comments.filter(function(item) {
return item.postId === post.id;
});
}
注:filter()返回的是一个数组,find()只是返回一个对象。
find()找到第一个元素就不会再继续遍历。
应用:
(1)找到数组中符合条件的对象。
var products = [
{
name:"cucunber",
type:"vegetable"
},{
name:"apple",
type:"fruit"
},{
name:"orange",
type:"fruit"
}
];
var fruit = products.filter(function(item) {
return item.type === "fruit";
});
(2)存在对象A和数组B,返回A属性值对应的对象
var post = { id: 1, title: "A" };
var comments = [
{ postId: 3, content: "CCC" },
{ postId: 2, content: "BBB" },
{ postId: 1, content: "AAA" }
];
function id(post,comments) {
return comments.find(function(item) {
return item.postId === post.id;
});
}