JS数组基本方法

1. instanceof可以正确的判断对象的类型,其内部机制是通过判断对象的原型链中是不是能找到类型的prototype。

let a = ['a','b','c','d''e','f']
console.log(a instanceof Array) // true
复制代码

2. Array.isArray()

let a = ['a','b','c','d''e','f']
Array.isArray(a) // true
复制代码

3. Object.prototype.toString.call()

let a = ['a','b','c','d''e','f']
Object.prototype.toString.call(a) // [object Array]
复制代码

4. join() 方法将一个数组(或类数组对象)的所有元素连成一个字符串并返回这个字符串。且不会改变原数组。默认连接符为“,”

var elements = ['A', 'B', 'C'] 

console.log(elements.join()) // A,B,C

console.log(elements.join('')) // ABC

console.log(elements.join('-')) // A-B-C

复制代码

5. reverse() 方法将数组中元素的位置颠倒。此方法会改变原数组。

var elements = ['A', 'B', 'C'] 
elements.reverse()
console.log(elements) // ['C','B','A']
复制代码

6. sort() 方法用于对数组排序,并返回数组。默认的排序顺序是根据字符串Unicode码点。此方法会改变原数组。

var array1 = [1, 30, 4, 21];
array1.sort();
console.log(array1);// [1, 21, 30, 4]
复制代码

7. concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。

var array1 = ['a', 'b', 'c']
var array2 = ['a', 'e', 'f']

console.log(array1.concat(array2)) // ["a", "b", "c", "a", "e", "f"]
复制代码

8. slice(begin,end) 方法返回一个新数组,这一对象是一个由 begin和 end(不包括end)决定的原数组的浅拷贝。原始数组不会被改变。

var arr = [1, 2, 3, 4, 5]
arr.slice(0) // [1, 2, 3, 4, 5]
arr.slice(1, 2) // [2]
arr.slice(1, 3) // [2, 3]
复制代码

9. splice() 方法删除现有元素或添加新元素来修改数组,并以数组返回原数组被修改的内容。

var arr = [1, 3, 4, 5]
arr.splice(1,0,2) // []
console.log(arr) // [1,2,3,4,5]
arr.splice(4,1) // [5]
console.log(arr) // [1,2,3,4]
复制代码

10. push() 方法将一个或多个元素添加到数组的末尾,并返回改数组的新长度。

var arr = [1,3,5,7]
arr.push(8) // [1,3,5,7,8]
复制代码

11. unshift() 方法将一个或多个元素加到数组的开头,并返回该数组的新长度。

var arr = [1, 2, 3]
console.log(arr.unshift(4, 5))  // 5
console.log(arr)  [4, 5, 1, 2, 3]
复制代码

12. pop() 方法从数组中删除最后一个元素,并返回该元素的值。此方法更改数组的长度。

var arr = [1, 2, 3]
console.log(arr.pop())  // 3
复制代码

13. shift() 方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。

var arr = [1, 2, 3]
console.log(arr.shift())  // [2,3]
复制代码

14. 遍历

for in

var arr = [1, 2, 3]
for (var i in arr) {
  console.log(arr[i]) 
}
// 1 
// 2
// 3
var obj = {a:1; b:2; c:3}
for (var i in arr) {
    console.log(obj[i])
}
// 1
// 2
// 3
复制代码

for of 循环可以使用的范围包括数组、Set 和 Map 结构、某些类似数组的对象等。

const arr = [1, 2, 3];
for(let v of arr) {
  console.log(v); 
}
// 1
// 2
// 3
复制代码

map() 方法创建一个新数组,其结果是该数组的每一个元素都调用一个提供的函数后返回的结果。map()方法在一定程度上就是为生成新数组而生的

var arr = [1,2,3]
var mapArr = arr.map(x => x * 3)
console.log(mapArr) // [1,6,9]

var numbers = [1, 4, 9];
var roots = numbers.map(Math.sqrt);
// roots的值为[1, 2, 3], numbers的值仍为[1, 4, 9]
复制代码

forEach() 方法对数组的每一个元素执行一次提供的函数。

var arr = [1,2,3]
arr.forEach(function(item,index,arr){
    console.log(`arr[${index}]=${item}`)
})
// arr[0]=1
// arr[1]=2
// arr[2]=3
复制代码

15. filter() 方法创建一个新数组,此新数组包含通过所提供函数实现的测试的所有元素。

var arr = [1,2,3]
const result = arr.filter(x => x >1)
console.log(result) // [2,3]
复制代码

16. some() 方法测试数组中的某些元素是否通过由提供的函数实现的测试(1真即真)。数组中的每一个元素执行一次 callback 函数,直到找到一个使得 callback 返回一个“真值”(即可转换为布尔值 true 的值)。如果找到了这样一个值,some 将会立即返回 true。否则,some 返回 false。

var arr = [1,2,3]
var even = arr.some(x => x > 5) // false
复制代码

17. every() 方法测试数组的所有元素是否都通过了指定函数的测试(一假即为假)。

var arr = [1,2,3]
var passed = arr.every(x => x < 5) // true
复制代码

18. reduce() 方法对累计器和数组中的每个元素(从左到右)应用一个函数,将其简化为单个值。accumulator(累加器),currentValue(当前值)。此方法必须传入两个参数。

var arr = [1,2,3,4]
var reducer = arr.reduce((accumulator,currentValue) => accumulator * currentValue) // 24
复制代码

数组求和

var sum = arr.reduce((accumulator,currentValue) => accumulator + currentValue) // 10
复制代码

找出数组中最大值

var max = arr.reduce((accumulator,currentValue) => accumulator > currentValue ? accumulator : currentValue) // 4
复制代码

找出数组中最小值

var min = arr.reduce((accumulator,currentValue) => accumulator < currentValue ? accumulator : currentValue) // 1
复制代码

19. reduceRight() 方法接收一个函数作为累加器和数组的每个值(从右到左)将其减少为单个值。

const arr = [[1,2],[3,4],[5,6]]
const result = arr.recudeRight((accumulator,currentValue) => accumulator.concat(currentValue))
console.log(result) // [5,6,3,4,1,2]
复制代码

reduce()与reduceRight()的区别

var a = ['1', '2', '3', '4', '5']; 
var left  = a.reduce(function(prev, cur)      { return prev + cur; }); 
var right = a.reduceRight(function(prev, cur) { return prev + cur; }); 

console.log(left);  // "12345"
console.log(right); // "54321"
复制代码

20. 数组交换

let arr = [1,2,3]
复制代码

方法1

创建临时变量

let temp = arr[0]
arr[0] = arr[2]
arr[2] = temp
复制代码

方法2

ES6解构赋值

[arr[0],arr[2]] = [arr[2],arr[0]]
复制代码

方法3

splice方法,此方法会以数组返回原数组被修改的内容。

arr.splice(2,1, ...arr.splice(0,1, arr[2]))
注:arr.splice(0,1, arr[2]) // [1] 此时数组为 [3,2,3]
arr.splice(2,1,1) // 数组交换位置完成 [3,2,1]
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值