es6數組方法find()、findIndex() filter()的總結


find()查找符合條件數組的元素(只能夠找出第一個符合條件的)

// 查找出大33的元素.
// find查找第一個符合條件的數組元素(只查找出第一個  找不到返回undefined)
// 它的參數是一個回調函數。在回調函數中可以寫你要查找元素的條件,當條件成立為true時,返回該元素。
// 回調函數有三個參數。value:當前的數組元素。index:當前索引值。arr:被查找的數組。
let arr = [11, 22, 33, 44, 45, 66, 77, 88];
let firstArr = arr.find((v) => {
     return v > 34
});
console.log(firstArr); //輸出44



// 找到下標為1的那個元素
let conarr = [1, 3, 4, 5, 6, 7, 8, 9, 10];
let newArr = conarr.find((value, index, arr) => {
    return index == 1;
})
console.log(newArr); //3

查找符合數組元素的下標(只能夠找出第一個符合條件的)

// findIndex()與find()的使用方法相同,只是當條件為true時findIndex()返回的是索引值,而find()返回的是元素
// 如果沒有符合條件元素時findIndex()返回的是-1,
// 注意find()方法返回的是 undefined
let arr2 = [11, 22, 33];
let newarr1 = arr2.findIndex((v, i, arr) => {
    return v > 22;
})
console.log(newarr1) // 輸出小標是2

filter()查找符合條件的元素數組,(返回多個只要符合條件)

// filter()與find()使用方法也相同。同樣都接收三個參數。不同的地方在於返回值。
// filter()返回的是符合條件的元素數組。通常用於過濾
// find()只返回第一個滿足條件的元素。如果條件不滿足,返回的是undefined. 滿足條件返回第一個元素(只返回一個)
//filter()條件不滿足返回的是一個空數組,而find()返回的是undefined,滿足條件返回符合元素的數組(返回多個)
let arr3 = [{
        book: "三國演義",
        id: "180001",
        price: 44,
    },
    {
        book: "幻城",
        id: "180002",
        price: 30
    },
    {
        book: "西游記",
        id: "180003",
        price: 41
    }
];
let newarr4 = arr3.filter((v, i, arr) => {
    return v.price > 40
})
console.log(newarr4)
在一個數組中刪除某一個特定的值。如在下面的數組中刪除小明。返回一個新的數組
let arr5 = ['小明', '張三', '李四', '王武'];
let arrindex6 = arr5.findIndex((v, i, arr) => {
    return v == "小明"
});
console.log(arrindex6); //輸出為0,只能夠找到一個
arr5.splice(arrindex6, 1); //注意呀!數組的很多基本方法,會改變原數組,同時返回被刪除的那個元素。
console.log(arr5);
// ==============

// 可以將上面的代碼優化一下
let arr6 = ['小明', '張三', '李四', '王武'];
arr6.splice(arr6.findIndex(v => v == "小明"), 1);
console.log(arr6);

返回被刪除的那個元素

arr7= ['小明', '張三', '李四', '王武'];
console.log(arr7.splice(0,1));//返回被刪除的那個元素

注意和上面的區別

arr8 = ['小明', '張三', '李四', '王武'];
arr8.splice(0, 1); //改變原數組。返回被刪除的那個元素
console.log(arr8);// ["張三", "李四", "王武"]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM