增
unshift 原数组被改变
let list1 = [2, 3, 5]
let list2 = list1.unshift(1)
console.log(list1) // [1, 2, 3, 5]
console.log(list2) // 4==>>数组的长度
push 原数组被改变
var arr1 = [1,2,3]
var p = arr1.push(4)
console.log(arr1) // [1,2,3,4]
console.log(p) // 4
splice 原数组被改变
- 第一个参数 : 截取起点
- 第二个参数 : 截取长度(要截取几个item就写几)
- 后面的参数 : 新增的item
let arr1 = [0,1,2,3]
let arr2 = arr1.splice(1,0,'a','b','c')
console.log(arr1) // [0, "a", "b", "c", 1, 2, 3]
console.log(arr2) // []
删
shift原数组被改变
- 作用: 去掉数组的第一个item
- 特点: return 被删掉的那个item, ==>>原数组被改变
var arr1 = [1,2,3]
var p = arr1.shift()
console.log(arr1) // [2,3]
console.log(p) // 1
splice 原数组被改变
- return 被删除的项目
- 参数1 : 删除起点
- 参数2 : 删除长度
let arr01 = [0, 0, 1, 1, 0]
let arr02 = arr01.splice(2,2)
console.log(arr01) // [0, 0, 0]
console.log(arr02) // [1, 1]
改
fill原数组被改变
- 第一个参数: 要替换的内容
- 第二个参数: 替换的起点(包括)
- 第三个参数: 替换的结束点(不包括)
let list = [1,2,3,4,5,6]
let f = list.fill('s',1,4)
console.log(list)
console.log(f)
// [1, "s", "s", "s", 5, 6]
// [1, "s", "s", "s", 5, 6]
reverse原数组被改变
let s = '赵兄托你帮我办点事'
let l = [...s] // 字符串转数组
let r = l.reverse()
console.log(r) // ["事", "点", "办", "我", "帮", "你", "托", "兄", "赵"]
console.log(l) // ["事", "点", "办", "我", "帮", "你", "托", "兄", "赵"]
sort原数组被改变
- 将一个数组升序排列(a-b)
var arr1 = [11,1,2,22,33,3]
var s = arr1.sort((a, b) => a-b)
console.log(arr1) // [1, 2, 3, 11, 22, 33]
console.log(s) // [1, 2, 3, 11, 22, 33]
- 将一个数组降序排列(b-a)
var arr1 = [11,1,2,22,33,3]
var s = arr1.sort((a, b) => b-a)
console.log(arr1)
console.log(s)
- 将一个数组里的obj按年龄由小到大排序
var arr1 = [
{name: 'jack', age: 22},
{name: 'marry', age: 2},
{name: 'tony', age: 11}
]
var s = arr1.sort((a, b) => a.age-b.age)
console.log(arr1)
console.log(s)
splice原数组被改变
- return 被删除的项
- 参数1 : 截取起点
- 参数2 : 截取长度
- 其他参数 : 新增的item
// 将 ---> [0, 0, 0, 1, 1, 1, 0]
// 变成---> [0, 0, 0, 9, 9, 9, 0]
let arr01 = [0, 0, 0, 1, 1, 1, 0]
let arr02 = arr01.splice(3, 3, 9, 9, 9)
console.log(arr01) // [0, 0, 0, 9, 9, 9, 0]
console.log(arr02) // [1, 1, 1]
查
splice 原数组改变
- 第一个参数, 截取起点
- 第二个参数, 截取长度
- 原数组会被改变
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var list = fruits.splice(2,2);
console.log(fruits) //["Banana", "Orange"]
console.log(list) //["Apple", "Mango"]
slice 原数组不变
- 从原数组里面提取出一段
- 第一个参数为起点
- 第二个参数为终点
let list01 = ['a', 'b', 'c']
let list02 = list01.slice(0,2)
console.log(list01) // ["a", 'b', "c"]
console.log(list02) // ["a", 'b']
find原数组不变
- 当找到第一个满足条件的item便会停止寻找
- 所以, f = 4 而不是[4,5,6]
let list = [1,2,3,4,5,6]
let f = list.find((value,index,arr)=> value>3)
console.log(list) // [1, 2, 3, 4, 5, 6]
console.log(f) // 4
当数组中的item是obj时要特别小心, 如果我们修改查找结果, 原数组students也会发生变化
var students = [
{name: 'jack' , age: 22, sex:'男'},
{name: 'lucy' , age: 22, sex:'女'},
{name: 'tom' , age: 25, sex:'男'},
{name: 'Jerry' , age: 88, sex:'男'}
]
let tom = students.find(item=>item.name==='tom')
tom.age = 100 // <<==============================如果我们修改查找结果, 原数组students也会发生变化
console.log(tom) // {name: 'tom' , age: 100, sex:'男'}
console.log(students)
// [
// {name: 'jack' , age: 22, sex:'男'},
// {name: 'lucy' , age: 22, sex:'女'},
// {name: 'tom' , age: 100, sex:'男'}, <<=======================如果我们修改查找结果, 原数组students也会发生变化
// {name: 'Jerry' , age: 88, sex:'男'}
// ]
filter()原数组不变
改变过滤数据women, 原数据students也会跟着改变
var students = [
{name: 'jack' , age: 22, sex:'男'},
{name: 'lucy' , age: 22, sex:'女'},
{name: 'tom' , age: 25, sex:'男'},
{name: 'Jerry' , age: 88, sex:'男'}
]
let women = students.filter(item => item.sex=='女')
women[0].age = 18 // <<================================注意: 改变过滤数据women, 原数据students也会跟着改变
console.log(women) // [{name: "lucy", age: 18, sex: "女"}]
console.log(students)
// [
// {name: 'jack' , age: 22, sex:'男'},
// {name: 'lucy' , age: 18, sex:'女'}, <<================注意: 改变过滤数据women, 原数据students也会跟着改变
// {name: 'tom' , age: 25, sex:'男'},
// {name: 'Jerry' , age: 88, sex:'男'}
// ]
indexOf
var fruits = ["香蕉", "橙子", "苹果", "甜瓜"];
var index = fruits.indexOf("苹果")
console.log(index) // 2
item 是一个对象
let list = [
{name: 'a', age: 11},
{name: 'b', age: 18},
{name: 'c', age: 9},
]
let target = list.find(item => item.name === 'a')
let index01 = list.indexOf(target)
let index02 = list.indexOf({name: 'a', age: 11}) // -1 表示查询失败
console.log(index01, index02) // 0 -1
类型转换
join 数组 转 字符串
// ['a', 'b', 'c'] ---> 'abc'
let a = ['a', 'b', 'c']
let s = a.join('')
console.log(s) // 'abc'
// ['a', 'b', 'c'] ---> 'a-b-c'
let a = ['a', 'b', 'c']
let s = a.join('-')
console.log(s) // 'a-b-c'
split() 字符串转数组
- 例1: 将字符串'abcde'变成数组
let s = 'abcdefg'
let list = s.split('')
console.log(list) //['a','b','c','e','f','g']
let s = 'abcde'
let list = [...s]
console.log(list) // ['a', 'b', 'c', 'd', 'e']
- 例2: 将字符串
' 7 x 8 x 9 '转成['7', '8', '9']
let s = ''7x8÷9''
let numer_list = s.split(/[\×\÷+-]/)
console.log(number_list) //['7', '8', '9']
reduce [...] 转 {...}
const a = ["a", "b"];
const b = a.reduce((res, v, k) => {
res[k] = v;
return res;
}, {});
console.log(a); // ["a", "b"]
console.log(b); // {0: "a", 1: "b"}
[1, 2, 3].reduce((a,b) => {
console.lgo(a, b)
return b
})
// 打印结果
// 1,2
// 2,3
坑
交换赋值
let x = 1
let y = 2; //<<<--- 一定要写这个分号, 不然会报错(y is undefined)
[x,y] = [y,x]
console.log(x, y)