数组方法

45 阅读2分钟

1.转字符串方法:

  • toString()
  • join()
const arr = [1,2,3,4,[7,8,9,[11]]]
//扁平化所有
console.log(arr.toString()); //1,2,3,4,7,8,9,11
//扁平化一层
console.log(arr.join());//1,2,3,4,7,8,9,11
console.log(arr.join(''));//12347,8,9,11
console.log(arr.join('-'));//1-2-3-4-7,8,9,11

const str = 'zarkz'
console.log(str.split('')); //[ 'z', 'a', 'r', 'k', 'z' ]

2.堆栈方法

  • push() 返回值 => 增加数组后的长度
  • pop() 返回值 => 删除的项目
  • unshift() 返回值 => 增加数组后的长度
  • shift() 返回值 => 删除的项目
const arr = [1,2,3,4]
console.log(arr.push(1011)); //5
console.log(arr.pop()); //1011

console.log(arr.unshift(101)); //5
console.log(arr.shift()); //101

3.排序方法

  • reverse() 返回值 => 是倒序之后的源数组,意味着会修改原数组
  • sort()返回值 => 排序之后的源数组,意味着会修改原数组
  • 随机排序
const arr = [1,2,3,4,5,0]
const a = arr.reverse() 
console.log(a); //[ 0, 5, 4, 3, 2, 1 ]
console.log(a === arr); //true
console.log(arr); //[ 0, 5, 4, 3, 2, 1 ]


console.log(arr,arr.sort((a,b) => a-b)); //[ 0, 1, 2, 3, 4, 5 ] [ 0, 1, 2, 3, 4, 5 ]

//随机排序
function compate() {
  return Math.random() - 0.5
}
console.log(arr.sort(compate));//[ 0, 5, 4, 1, 2, 3 ]

4.删改方法

区间是[)左闭右开;

  • slice() 返回值 => 是新数组,不会修改原数组。
  • splice() 返回值 => 是删除元素组成的数组。会修改原数组。 splice(增加或者删除的位置, 指定删除元素的个数, 插入的值)
const arr = [1,2,3,4]

console.log(arr, arr.slice()); //[ 1, 2, 3, 4 ] [ 1, 2, 3, 4 ]

console.log(arr,arr.slice(2)); //[ 1, 2, 3, 4 ] [ 3, 4 ]

console.log(arr,arr.slice(2,3)); //[ 1, 2, 3, 4 ] [ 3 ]

console.log(arr,arr.slice(-2,-1)); //[ 1, 2, 3, 4 ] [ 3 ]

console.log(arr,arr.splice()); //[ 1, 2, 3, 4 ] []
console.log(arr,arr.splice(2)); //[ 1, 2 ] [ 3, 4 ]
console.log(arr,arr.splice(-2)) //[ 1, 2 ] [ 3, 4 ]
console.log(arr,arr.splice(0,3)); //[ 4 ] [ 1, 2, 3 ]
console.log(arr,arr.splice(0,0,300)); //[ 300, 1, 2, 3, 4 ] []

5.查找方法

  • indexOf() 返回值 => 如果找到,返回的是索引值,如果找不到,返回值是-1
  • includes 返回值 => 如果找到,返回的是true,如果找不到,返回值是false
const arr = [1,2,3,4] 
console.log(arr.indexOf(1)); //0
console.log(arr.indexOf(10)); //-1

console.log(arr.includes(1)); //true
console.log(arr.includes(10)); //false
  • find() 返回值 => 第一个符合条件的值
  • findIndex() 返回值 => 第一个符合条件的索引值
const arr = [1,1,2,3,4] 
//1
console.log(arr.find((n) => {
  return n === 1
}));
//0
console.log(arr.findIndex((n) => {
  return n === 1
}));

6.数组遍历

  • forEach() 没有返回值
const arr = ['a','b','c','d','e']

arr.forEach((item,index,arr) => {
  console.log(item,index,arr);
})

a 0 [ 'a', 'b', 'c', 'd', 'e' ]
b 1 [ 'a', 'b', 'c', 'd', 'e' ]
c 2 [ 'a', 'b', 'c', 'd', 'e' ]
d 3 [ 'a', 'b', 'c', 'd', 'e' ]
e 4 [ 'a', 'b', 'c', 'd', 'e' ]
  • map() 有返回值
const arr = ['a','b','c','d','e']

const arrmap = arr.map((item,index,arr) => {
  return item + '1'
})
console.log(arrmap); //[ 'a1', 'b1', 'c1', 'd1', 'e1' ]
const obj = {
  name: 'zark',
  age: 18
}
console.log(Object.keys(obj)); //[ 'name', 'age' ]
for(var key of Object.keys(obj)) {
  console.log(key); //name age
}

console.log(Object.values(obj)); //[ 'zark', 18 ]
for(var value of Object.values(obj)) {
  console.log(value); //zark 18
}

console.log(Object.entries(obj)); //[ [ 'name', 'zark' ], [ 'age', 18 ] ]
for(var [key,value] of Object.entries(obj)) {
  console.log(key,value); // name zark  age 18
}

const arr = [1,1,2,3,4] 
const obj = {
  name: 'zark',
  age: 18
}
console.log(arr.keys(arr));
for(var key of arr.keys(arr)) {
  console.log(key); //输出索引
}

console.log(arr.values(arr));
for(var value of arr.values(arr)) {
  console.log(value); //输出值
}

console.log(arr.entries(arr));
for(var [key,value] of arr.entries(arr)) {
  console.log(key,value);
}