Open innerWang opened 5 years ago
splice() 方法可实现对数组元素的删除和替换,以数组形式返回被删除的内容,未删除则返回空数组,此方法会改变原数组。
splice()
arr.splice(start [,deleteCount [, item1 [, item2 [ ,... ]]]])
var a = [1,2,3,4,5,6] console.log(a.splice(2)) // [3, 4, 5, 6] console.log(a) // [1, 2]
var b = [1,2,3,4,5,6] console.log(b.splice(2,1)) // [3] console.log(b) // [1, 2, 4, 5, 6]
var c = [1,2,3,4,5,6] console.log(c.splice(2,1,9,10)) // [3] console.log(c) // [1, 2, 9, 10, 4, 5, 6]
## 2. Array.prototype.slice() **`slice()`** 方法返回由 begin 和 end 决定的原数组的浅拷贝。 ```js arr.slice([begin] [, end])
console.log( [1,2,3,4,5].slice(-2) ) // [4, 5] console.log( [1,2,3,4,5].slice(-2,-1) ) // [4] console.log( [1,2,3,4,5].slice(3,-1) ) // [4] console.log( [1,2,3,4,5].slice(3,-2) ) // [ ]
slice 方法可以用于将一个类数组对象/集合转换为一个新数组
slice
function getArr(){ return Array.prototype.slice.call(arguments); // return [].slice.call(arguments); } console.log(getArr(1, 2, 3)) // [1, 2 ,3]
reduce() 方法对数组中的每个元素执行自定义的reducer()函数,将结果汇总为单个返回值。
reduce()
arr.reduce(callback [, initValue]) //此处 callback即为自定的reducer()
callback 的语法如下:
callback(accumulator, currentValue [,currentIndex] [,array] ){}
accumulator : 回调函数的返回值,或者为 initValue,或者为数组的第一个元素 currentValue : 数组中正在处理的元素 currentIndex : 正在被处理的元素的下标,若有initValue,则起始为0 ,否则为1(第一次运算处理的第二个元素) array : 调用 reduce的数组
accumulator
currentValue
currentIndex
array
initValue 第一次调用 callback 时的第一个参数(accumulator)的值,若没有提供初始值,则使用数组中的第一个元素。
// reduce 实现数组元素累加 var arr =[1,2,3,4,5] var a= arr.reduce((ret,curV,curI)=>{ console.log(''+ret + ' '+curV +' '+ curI) return ret+curV }) console.log(a)
// reduce 实现数组拍平 const flatten = arr => { return arr.reduce((ret,ele)=>{ return ret.concat(Array.isArray(ele) ? flatten(ele) : ele) },[]) } var arr1 = [1, [[2], 3, 4], 5] console.log(flatten(arr1))
1. Array.prototype.splice()
splice()
方法可实现对数组元素的删除和替换,以数组形式返回被删除的内容,未删除则返回空数组,此方法会改变原数组。var b = [1,2,3,4,5,6] console.log(b.splice(2,1)) // [3] console.log(b) // [1, 2, 4, 5, 6]
var c = [1,2,3,4,5,6] console.log(c.splice(2,1,9,10)) // [3] console.log(c) // [1, 2, 9, 10, 4, 5, 6]
slice
方法可以用于将一个类数组对象/集合转换为一个新数组3. Array.prototype.reduce()
reduce()
方法对数组中的每个元素执行自定义的reducer()函数,将结果汇总为单个返回值。callback 的语法如下:
accumulator
: 回调函数的返回值,或者为 initValue,或者为数组的第一个元素currentValue
: 数组中正在处理的元素currentIndex
: 正在被处理的元素的下标,若有initValue,则起始为0 ,否则为1(第一次运算处理的第二个元素)array
: 调用 reduce的数组initValue 第一次调用 callback 时的第一个参数(accumulator)的值,若没有提供初始值,则使用数组中的第一个元素。
// reduce 实现数组拍平 const flatten = arr => { return arr.reduce((ret,ele)=>{ return ret.concat(Array.isArray(ele) ? flatten(ele) : ele) },[]) } var arr1 = [1, [[2], 3, 4], 5] console.log(flatten(arr1))