join 将数组的逆向成字符串操作`(修改原数组)`
把数组中的所有元素转换为一个字符串
var arr = [4, 12, 16, 20];
console.log(arr.join()) //4,12,16,20
var arr = [4, 12, 16, 20];
console.log(arr.join()) //4-12-16-20
var arr = [4, 12, 16, 20];
console.log(arr.join()) //4*12*16*20
// 可以用 split 在进行反转
'4,12,16,20'.split(',') // ['4', '12', '16', '20']
'4*12*16*20'.split('-') // ['4', '12', '16', '20']
'4*12*16*20'.split('*') // ['4', '12', '16', '20']
reverse 数组元素全部倒过来 `(修改原数组)`
var arr = [4, 12, 16, 20];
console.log(arr.reverse()) // [20, 16, 12, 4]
sort 排序 `(修改原数组)`
var arr = [4, 12, 16, 20];
console.log(arr.sort()) // [12, 16, 20, 4]
// 注意:当数字是按字母顺序排列时"40"将排在"5"前面。 使用数字排序,你必须通过一个函数作为参数来调用。函数指定数字是按照升序还是降序排列。
console.log(arr.sort((a,b)=>{
return b-a
})) // [20, 16, 12, 4]
splice 可用来增删改 `(修改原数组)`
从数组中添加或删除元素。
// 语法 array.splice(index,howmany,item1,.....,itemX)
// index *必填*从何处添加/删除元素。 该参数是开始(添加|删除)的数组元素的下标(数字)。
// numany *可选*规定应该删除多少元素。(数字 | ‘0’)。 如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
// item1, ..., itemX *可选*要添加到数组的新元素
var a = [1,2,3];
//a.splice(操作位置,删除个数,插入元素 用逗号隔开)
a.splice(2,0,'a') //添加 a=[1,2,3,'a']
var b = [1,2,3];
b.splice(2,1) //删除 b=[1,2]
var c = [1,2,3];
c.splice(2,1,'a') //修改 c=[1,2,'a']
push 在数组后 拼接增加 `(修改原数组)`
var arr = [4, 12, 16, 20];
arr.push(11)
console.log(arr) // [4, 12, 16, 20, 11]
pop 在数组后删除 `(修改原数组)`
var arr = [4, 12, 16, 20];
arr.pop()
console.log(arr) // [4, 12, 16 ]
unshift 在数组头部添加 `(修改原数组)`
var arr = [4, 12, 16, 20];
arr.unshift(11)
console.log(arr) // [11, 4, 12, 16, 20]
shift 在数组头部删除 `(修改原数组)`
var arr = [4, 12, 16, 20];
arr.unshift()
console.log(arr) // [ 12, 16, 20 ]
concat 返回新数,合并数组 可用作浅拷贝 (不修改原数组)
语法:arr.concat(arr1, arr2,..., arrn)
var a = [4, 12, 16, 20];
var b = ["b1", "b2", "b3"];
var c = a.concat(b);
console.log(c); // [4, 12, 16, 20, 'b1', 'b2', 'b3']
copyWithin 从数组的指定位置拷贝元素到数组的另一个指定位置中
语法 arr.copyWithin(target, start, end)
target *必填* 复制到指定目标索引位置。
start *可填* 元素复制的起始位置。
end *可填* 停止复制的索引位置 (默认为 array.length)。如果为负值,表示倒数。
var arr = [4, 12, 16, 20];
console.log(arr.copyWithin(2,0)) // [4, 12, 4, 12]
slice 返回新数,里面的值是截取下来的值 (不修改原数组)
// 语法 : array.slice(start, end)
var arr = [4, 12, 16, 20];
var new_arr = arr.slice(1,2)
console.log(new_arr) // [12]
var arr = [4, 12, 16, 20];
var new_arr = arr.slice(1,3)
console.log(new_arr) // [12, 16]
var arr = [4, 12, 16, 20];
var new_arr = arr.slice(-2,3)
console.log(new_arr) // [16]
for...in... 这货也可以用来遍历 对象{a: 1, b: 2} 中的键值对
var arr = [4, 12, 16, 20];
for (var index in arr) {
console.log(index) // 0、1、2、3
console.log(arr[index]) // 4、12、16、20
}
forEach()
var arr = [4, 12, 16, 20];
arr.forEach((item,index)=>{
console.log(item) // 4、12、16、20
console.log(index) // 0、1、2、3
})
filter 过滤
var arr = [4, 12, 16, 20];
var new_arr = arr.filter((item,index)=> item == 16)
console.log(new_arr) // [16]
every() 针对所有元素
var arr = [4, 12, 16, 20];
var flag = arr.every((item,index)=> item % 2 == 0)
console.log(flag ) // true
var arr = [4, 12, 16, 20];
var flag = arr.every((item,index)=> item % 3 == 0)
console.log(flag ) // false
some() 存在某个元素
var arr = [4, 12, 16, 20];
var flag = arr.every((item,index)=> item % 2 == 0)
console.log(flag ) // true
var arr = [4, 12, 16, 20];
var flag = arr.every((item,index)=> item % 3 == 0)
console.log(flag ) // true
var arr = [4, 12, 16, 20];
var flag = arr.every((item,index)=> item % 9 == 0)
console.log(flag ) // false
reduce() 从左到右索引 可用来计算数量等
var arr = [4, 12, 16, 20];
var count = arr.reduce((a,b)=> a + b )
console.log(count) // 52
reduceRight // 从右到左 可用来计算数量等
var arr = [4, 12, 16, 20];
var count = arr.reduceRight((a,b)=> a + b )
console.log(count) // 52
indexOf() 从左到右索引
var arr = [4, 12, 16, 20];
var index1 = arr.indexOf(16)
console.log(index1) // 2 找到返回下标
var index2 = arr.indexOf(21)
console.log(index2) // -1 找不到返回 -1
lastIndexOf() 从右到左索引
var arr = [4, 12, 16, 20];
var index1 = arr.lastIndexOf(16)
console.log(index1) // 2 找到返回下标
var index2 = arr.lastIndexOf(21)
console.log(index2) // -1 找不到返回 -1
find()
var arr = [4, 12, 16, 20];
var new_arr = arr.find((item,index)=> item >= 16)
console.log(new_arr) // 16
var arr = [4, 12, 16, 20];
var new_arr = arr.find((item,index)=> item > 4)
console.log(new_arr) // 12
var arr = [4, 12, 16, 20];
var new_arr = arr.find((item,index)=> item != 16)
console.log(new_arr) // 4
/**
find() 方法返回通过测试(函数内判断)的数组的第一个元素的值。
find() 方法为数组中的每个元素都调用一次函数执行:
当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。
如果没有符合条件的元素返回 undefined
注意: find() 对于空数组,函数是不会执行的。
注意: find() 并没有改变数组的原始值。
有匹配项 返回对应项
无匹配项 返回undefined
语法:arr.find(function(value, index, arr),thisValue)
value*必填*当前元素
index *选填*当前元素的索引值
arr *选填*当前元素所属的数组对象
thisValue 可选。 传递给函数的值一般用 "this" 值。 如果这个参数为空, "undefined" 会传递给 "this" 值
*/
findIndex()
/**
语法 array.findIndex(function(value, index, arr), thisValue)
value*必填*当前元素
index *选填*当前元素的索引值
arr *选填*当前元素所属的数组对象
thisValue 可选。 传递给函数的值一般用 "this" 值。 如果这个参数为空, "undefined" 会传递给 "this" 值
有匹配项 返回对应下标
无匹配项 返回 -1
*/
var arr = [4, 12, 16, 20];
var new_arr = arr.findIndex((item,index)=> item >= 16)
console.log(new_arr) // 2
var arr = [4, 12, 16, 20];
var new_arr = arr.findIndex((item,index)=> item > 4)
console.log(new_arr) // 1
var arr = [4, 12, 16, 20];
var new_arr = arr.findIndex((item,index)=> item != 16)
console.log(new_arr) // 0
var arr = [4, 12, 16, 20];
var new_arr = arr.findIndex((item,index)=> item > 21)
console.log(new_arr) // -1