金魚腦記不起這麼多,只好寫寫文章速查用
盡量不要去操作原始資料,先複製一份做操作更佳
Array.isArray(arr) 判斷是否為陣列
unshift(0) 加入首項
shift() 移除首項
push(4) 加入末項
pop() 移除末項
let arr = [1, 2, 3]
let obj = {}
console.log(Array.isArray(arr)) //true
console.log(Array.isArray(obj)) //false
arr.unshift(0)
console.log(arr) // 加入首相[0, 1, 2, 3]
arr.shift()
console.log(arr) // 移除首項[1, 2, 3]
arr.push(4)
console.log(arr) // 加入末項[1, 2, 3, 4]
arr.pop()
console.log(arr) // 移除末項[1, 2, 3]
splice 整理文章才發現 可以用來插入元素 Orz....
const testArr = [0, 1, 2, 3]
// 可用參數: index,count,newElemA,newElemB
// splice 純粹加入元素
// 在 index0位置 刪除0個元素=不刪 插入 'HEAD'
testArr.splice(0, 0, 'Head')
console.log(testArr) // ['Head', 0, 1, 2, 3]
// splice 純粹刪除元素
// 於 index 4 刪除一個元素 即3
testArr.splice(4, 1)
console.log(testArr) // ['Head', 0, 1, 2]
// splice 刪除既有元素,在該位置新增元素
testArr.splice(0, 1, 'newElemA', 'newElemB')
console.log(testArr) // ["newElem", ,'newElemB', 0, 1, 2]
// split 字串方法
const str = 'hey yo'
str.split(' ') // 以空白為切割點
// slice
// 傳入參數:始、末 (切割結果不含末元素)
// 淺拷貝、原始陣列不會被修改
const sliceArr = [1, 2, 3, 4, 5]
// 用來複製陣列並產生出新陣列
const copyArr = sliceArr.slice(0)
console.log(copyArr) // [1, 2, 3, 4, 5]
// 產生子陣列,省略末即切到底
const partArr1 = sliceArr.slice(2)
console.log(partArr1) // [3, 4, 5]
// 始為 0 切至 index 1
const partArr2 = sliceArr.slice(0, 2)
console.log(partArr2) // [1, 2]
// copyWithin
// 參數: 搬遷位置、開始複製點、結束複製點
const arr1 = [1, 2, 3, 4, 5, 6]
const arr2 = [1, 2, 3, 4, 5, 6]
// 複製456 貼至 index 0 的位置,因為長度不改變,覆蓋元素
arr1.copyWithin(0, 3, 6)
console.log(arr1) // [4, 5, 6, 4, 5, 6]
// 預設始為0、末為陣列長度
// 將 整個陣列從 index 3的位置開始複蓋
arr2.copyWithin(3)
console.log(arr2) // [1, 2, 3, 1, 2, 3]
// 修改 slice 即可做到 splice效果,但就沒那麼漂亮
const arr = [1, 2, 3, 4, 5, 6]
const arrHead = arr.slice(0, 3)
const arrFoot = arr.slice(3, 7)
const newArr = [...arrHead, 'newStuff', ...arrFoot]
console.log(arr) // 原始陣列不被更改
console.log(newArr)
// splice
const spliceArr = [...arr]
spliceArr.splice(3, 0, 'newStuff')
console.log(spliceArr)
const arr1 = [1, 2, 3]
const arr2 = [4, 5, 6]
const arr3 = [7, 8, 9]
// concat [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(arr1.concat(arr2,arr3))
// rest parameter [1, 2, 3, 4, 5, 6]
console.log([...arr1, ...arr2])
const arr = ['a', 'a', 'b', 'c', 'd']
// includes
console.log(arr.includes('a'))// true
console.log(arr.includes('z'))// false
// find
console.log(arr.find(elem => elem === 'a')) // 'a'
console.log(arr.find(elem => elem === 'z')) // undefined
const arr = ['a', 'a', 'b', 'c', 'd']
// indexOf
console.log(arr.indexOf('a')) // 0
// findIndex
console.log(arr.findIndex(elem => elem === 'a')) // 0
console.log(arr.findIndex(elem => elem === 'z')) // -1
// jQuery $.inArray方法
$.inArray('a', arr) // 0
$.inArray('z', arr) // -1 不存在
inArray: function( elem, array, i ) {
var len;
if ( array ) {
if ( indexOf ) { return indexOf.call( array, elem, i ); }
len = array.length;
i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
for ( ; i < len; i++ ) {
// Skip accessing in sparse arrays
if ( i in array && array[ i ] === elem ) { return i; }
}
}
return -1;
}
// 找John並噴出該資料
const people = [
{ name: 'Peter', age: 10 },
{ name: 'John', age: 3 },
{ name: 'Nina', age: 15 },
]
const targetIndex = people.findIndex(elem => elem.name === 'John')
const target = people[targetIndex]
console.log(target)
MDN
andyyou
Summer。桑莫。夏天
StackOverFlow產數字陣列
copyWithin用法