js數組中容易誤用的一些方法

1.every和some

兩個方法的參數都是一個函數,函數的有3個參數,依次是當前值value,索引index,數組arrayjavascript

every判斷數據中的每一項是否知足某個條件,若是知足就返回true,有一項不符合就返回falsejava

var arr = [1,2,3]
var b = arr.every(function(value,index,arr){
	if(value>2){
		return true
	}
})
console.log(b) // false

some判斷數組中的某一項是否知足某個條件,若是知足就返回true,都不知足就返回false數組

var arr = [1,2,3]
var b = arr.some(function(value,index,arr){
    if(value>2){
    	return true
    }
})
console.log(b) // true

every和some返回的結果都是boolean值,而不是數組。函數

2. reduce

調用方式array.reduce(callback[, initialValue]); 對數組中的每個元素(從左到右)執行callback函數累加,callback的參數有4個prev(數組第一個值或者出入的初始值initialValue) value(當前值),index(當前值索引),arr(數組)this

若是有初始值,reduce會從數組第一元素開始執行,callback會執行array.length次。若是沒有初始值,reduce會從數組第二個元素開始執行,callback會執行array.length-1次。spa

有初始值code

var arr = [1,2,3]
var sum = arr.reduce(function(prev,cur,index,arr){
    console.log('index:',index,prev,cur)
    return prev+cur
},0)
// 打印結果
// index: 0 0 1
// index: 1 1 2
// index: 2 3 3

無初始值blog

var arr = [1,2,3]
var sum = arr.reduce(function(prev,cur,index,arr){
	console.log('index:',index,prev,cur)
	return prev+cur
})
// 打印結果
// index: 1 1 2
// index: 2 3 3

3.indexOf 和 includes的區別

  • 返回值不一樣:indexOf返回的是數值類型,而includes返回的是boolean值索引

  • 對NaN的處理方式不一樣,ip

  • 對稀疏數組的處理結果不一樣。

var a = [NaN]
console.log(a.indexOf(NaN))  // -1
console.log(a.includes(NaN)) // true

var b = [1,,3]
console.log(b.indexOf(undefined)) // -1
console.log(b.includes(undefined)) // true

4.find

調用方式 arr.find(callback[, thisArg])。find 方法對數組中的每一項元素執行一次 callback 函數,直至有一個 callback 返回 true。當找到了這樣一個元素後,該方法會當即返回這個元素的值 。callback 函數帶有3個參數:當前元素的值、當前元素的索引,以及數組自己

var a = [1,2,3]
var b = a.find(function(value,index,arr){
	return value > 1
})
console.log(b) // 2

  

find返回的是元素的值,而不是元素在數組中的索引,要返回數組的索引,使用findIndex

5.copyWithIn

調用方式arr.copyWithin(target[, start[, end]])

  • target,複製的序列要插入到數組中的位置

  • start,開始複製元素的起始位置

  • end,開始複製元素的結束位置,若是被忽略,默認copyWithin將會複製到arr.ength

var arr = [1,2,3,4,5]
arr.copyWithin(0,3)
console.log(arr) // [4, 5, 3, 4, 5]

這個方法會修改原來的數組

相關文章
相關標籤/搜索