如何在javaScript中更好地使用陣列
阿新 • • 發佈:2018-12-12
夥伴們好!本文對比了以下兩組關於陣列的操作方法: 1、Array.indexOf 、 Array.includes、Array.some; 2、Array.find 與 Array.filter;
1、Array.indexOf 、 Array.includes、Array.some
Array.indexOf 的描述:返回在陣列中可以找到的給定元素的索引值,如果不存在,則返回“-1”; Array.includes 的描述:(引數是一個值)判斷一個數組中是否包含給定的值,如果存在返回“true”;否則返回“false”; Array.some的描述:(引數是回撥函式)用於檢測陣列中的元素是否滿足指定條件,如果存在返回“true”;否則返回“false”;
總結:三者者都可判斷陣列中是否包含給定元素;區別是:
Array.indexOf | Array.includes | Array.some | |
---|---|---|---|
引數型別 | 給定元素值 | 給定元素值 | 回撥函式 |
返回型別 | 索引值 | 布林值 | 布林值 |
var fruits = ["apple","pear","banana","cherry"];
console.log(fruits.indexOf("banana")); //2
console.log(fruits.includes("banana")); //true
var stds = [{id:1,name:"Tom"},{id:2,name:"Bob"},{id:3,name:"Alex"}]; function getName(name){ return std => std.name === name; } console.log(stds.some(getName("Bob"))); //true
2、Array.find 與 Array.filter
Array.find: 返回第一個過濾出的元素; Array.filter:通過回撥函式過濾陣列,返回一個新陣列; 如果只想過濾出陣列中某個唯一項,最好用Array.find。從效能上看,若陣列內容過於龐大,回撥函式將執行相當多的次數;而使用Array.find將大大提升效能。
var stds = [{id:1,name:"Tom"},{id:2,name:"Bob"},{id:3,name:"Alex"}]; function getName(name){ return std => std.name === name; } console.log(stds.filter(getName("Alex"))); // [{id: 3, name: "Alex"}] 返回陣列 console.log(stds.find(getName("Bob"))); // {id: 2, name: "Bob"} 返回元素