1. 程式人生 > >如何在javaScript中更好地使用陣列

如何在javaScript中更好地使用陣列

夥伴們好!本文對比了以下兩組關於陣列的操作方法: 1、Array.indexOfArray.includesArray.some; 2、Array.findArray.filter;

1、Array.indexOfArray.includesArray.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.findArray.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"} 返回元素