JS(四)——filter()和find()

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;
    });
}

 

数组的`filter`和`find`方法是JavaScript中常用的数组方法,用于对数组进行筛选和查找操作。 `filter`方法用于筛选出满足特定条件的数组元素,并返回一个新的数组。它接受一个回调函数作为参数,该回调函数会被应用于数组中的每个元素。回调函数需要返回一个布尔值,表示该元素是否满足条件。如果返回值为`true`,则该元素会被包含在新的数组中,否则会被排除。 以下是`filter`方法的示例代码: ```javascript const numbers = [1, 2, 3, 4, 5]; const evenNumbers = numbers.filter((number) => number % 2 === 0); console.log(evenNumbers); // 输出 [2, 4] ``` 上述示例中,`filter`方法筛选出了数组`numbers`中的偶数,并将它们存储在新的数组`evenNumbers`中。 `find`方法用于查找满足特定条件的数组元素,并返回该元素。它也接受一个回调函数作为参数,该回调函数会被应用于数组中的每个元素。回调函数同样需要返回一个布尔值,表示该元素是否满足条件。当找到第一个满足条件的元素时,`find`方法会立即返回该元素,不再继续遍历后续元素。 以下是`find`方法的示例代码: ```javascript const numbers = [1, 2, 3, 4, 5]; const foundNumber = numbers.find((number) => number > 3); console.log(foundNumber); // 输出 4 ``` 上述示例中,`find`方法查找数组`numbers`中第一个大于3的元素,并将其返回给`foundNumber`变量。 需要注意的是,`filter`方法返回一个新的数组,而`find`方法返回一个单个元素。如果需要找到多个满足条件的元素,可以使用`filter`方法,并根据需求进行后续操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值