数组
增加
-
通过length
const fruitArr = ['苹果', '橘子', '梨'] fruitArr[fruitArr.length] = '香蕉' console.log('fruitArr', fruitArr) //['苹果', '橘子', '梨', '香蕉']
-
push(尾部添加)、unshift(头部添加)、splice(指定位置添加)
// push const fruitArr = ['苹果', '橘子', '梨'] fruitArr.push( '香蕉') console.log('fruitArr', fruitArr) //['苹果', '橘子', '梨', '香蕉']
// unshift const fruitArr = ['苹果', '橘子', '梨'] fruitArr.unshift( '香蕉') console.log('fruitArr', fruitArr) // ['苹果', '橘子', '梨', '香蕉']
// splice const fruitArr = ['苹果', '橘子', '梨'] fruitArr.splice( 3, 1, '香蕉' ) console.log('fruitArr', fruitArr) // ['苹果', '橘子', '梨', '香蕉']
-
合并数组
let fruitArr = ['苹果', '橘子', '梨'] fruitArr = fruitArr.concat('香蕉' ) console.log('newArr', fruitArr ) // ['苹果', '橘子', '梨', '香蕉']
-
展开运算符
// ... let fruitArr = ['苹果', '橘子', '梨'] fruitArr =[...fruitArr, '香蕉'] console.log('newArr', fruitArr ) // ['苹果', '橘子', '梨', '香蕉']
删除
-
length
const fruitArr = ['苹果', '橘子', '梨'] fruitArr.length = 2 console.log('fruitArr', fruitArr) //['苹果', '橘子']
-
delete
const fruitArr = ['苹果', '橘子', '梨'] delete fruitArr[2] console.log('fruitArr', fruitArr) // ['苹果', '橘子', empty]
-
pop(尾部删除) shift(头部删除) splice(指定位置)
// pop const fruitArr = ['苹果', '橘子', '梨'] fruitArr.pop() console.log('fruitArr', fruitArr) // ['苹果', '橘子']
// shift const fruitArr = ['苹果', '橘子', '梨'] fruitArr.shift() console.log('fruitArr', fruitArr) // ['橘子', '梨']
// splice const fruitArr = ['苹果', '橘子', '梨'] fruitArr.splice(2, 1) console.log('fruitArr', fruitArr) // ['苹果', '橘子']
-
filter
let fruitArr = ['苹果', '橘子', '梨'] fruitArr = fruitArr.filter(item => item !== '梨') console.log('newArr', fruitArr ) // ['苹果', '橘子']
-
protype原型方法
Array.prototype.remove = function(delIndex){ if(isNaN(delIndex) || delIndex > this.length){ return false } for(let i =0, n=0; i < this.length; i++){ if(this[i] != this[delIndex]){ this[n++] = this[i] } } this.length -= 1 } const fruitArr = ['苹果', '橘子', '梨'] fruitArr.remove(2) console.log('newArr', fruitArr ) // ['苹果', '橘子']
修改
//方法一找对元素对应下标进行修改
const fruitArr = ['苹果', '橘子', '梨']
const modifyIndex = fruitArr.findIndex(item => item === '梨')
fruitArr[modifyIndex] = '香蕉'
console.log('newArr', fruitArr ) // ['苹果', '橘子', '香蕉']
//方法二删除后在添加
let fruitArr = ['苹果', '橘子', '梨']
fruitArr = fruitArr.filter(item => item !== '梨')
fruitArr.splice(1, 0, '香蕉')
// fruitArr.splice(-1, 0, '香蕉') //负数代表下标从后往前数
console.log('newArr', fruitArr ) // ['苹果', '香蕉', '橘子']
查找
//方法一 indexOf() 方法返回指定元素在数组中的第一个索引,如果不存在,则返回-1
//第一个参数是‘要查找的元素’,第二个参数是‘开始查找的索引位置
const fruitArr = ['苹果', '橘子', '梨']
const index = fruitArr.indexOf( '梨')
console.log('index', index ) // 2
// 方法二 lastIndexOf() 方法返回指定元素在数组中的最后一个的索引,如果不存在则返回 -1
// 第一个参数是‘被查找的元素’,第二个参数是‘从此位置开始逆向查找’
const fruitArr = ['苹果', '橘子', '梨']
const index = fruitArr.lastIndexOf( '梨')
console.log('index', index ) // 2
// 方法三 findIndex()
const fruitArr = ['苹果', '橘子', '梨']
const index = fruitArr.findIndex(item => item === '梨')
console.log('index', index ) // 2
// 方法四 find()
const fruitArr = ['苹果', '橘子', '梨']
const result = fruitArr.find( item => item === '梨')
console.log('result', result ) // 梨
// 方法五 includes()
// 第一个参数是‘需要查找的元素值’,第二个参数是‘从哪个索引处开始查找’
const fruitArr = ['苹果', '橘子', '梨']
const includes = fruitArr.includes( '梨')
console.log('includes', includes ) // true
//方法六 some() 方法用于检测数组中的元素是否满足指定条件 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测
// arr.some(callback(currentValue,index,arr),thisValue)
// 参数一 callback(currentValue,index,arr) currentValue必须,当前元素的值 index可选。当前元素的索引值 arr可选,当前元素属于的数组对象
// 参数二 thisValue可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值
const fruitArr = ['苹果', '橘子', '梨']
const result = fruitArr.some( item => item ==='梨')
console.log('result', result ) // true
// 方法七 every() 方法用于检测数组中的元素是否满足指定条件 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测
// arr.every(callback(currentValue,index,arr),thisValue)
// 参数一 callback(currentValue,index,arr) currentValue必须,当前元素的值 index可选。当前元素的索引值 arr可选,当前元素属于的数组对象
// 参数二 thisValue可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值
const fruitArr = ['苹果', '橘子', '梨']
const result = fruitArr.every( item => item ==='梨')
console.log('result', result ) // false
// 方法八 filter()
const fruitArr = ['苹果', '橘子', '梨']
const result = fruitArr.filter( item => item ==='梨')
console.log('result', result ) // ['梨']
去重
// 方法一
const fruitArr = ['苹果', '橘子', '梨', '橘子']
const result = Array.from(new Set(fruitArr))
console.log('result', result ) //['苹果', '橘子', '梨']
//方法二 使用 filter 返回符合条件的集合
const fruitArr = ['苹果', '橘子', '梨', '橘子']
const result = fruitArr.filter(((item, index) => {return fruitArr.indexOf(item) === index}))
console.log('result', result ) //['苹果', '橘子', '梨'
const fruitArr = ['苹果', '橘子', '梨', '橘子']
const result = []
fruitArr.forEach((item) => {
if(!result.includes(item)) result.push(item)
})
console.log('result', result ) //['苹果', '橘子', '梨']
const fruitArr = ['苹果', '橘子', '梨', '橘子']
const obj = new Map()
const result = []
fruitArr.forEach((item) => {
if(!obj.has(item)) {
obj.set(item, true)
result.push(item)
}
})
console.log('result', result ) //['苹果', '橘子', '梨']
排序
//方法一 sort() 排序
let fruitArr = [1, 5, 6, 2, 7]
fruitArr.sort((a, b) => { return a-b})
console.log(fruitArr ) //[1, 2, 5, 6, 7]
//选择比较
const fruitArr = [1, 5, 6, 2, 7]
for(let i = 0; i < fruitArr.length; i++){
for(let j=i+1; j < fruitArr.length; j++ ){
if(fruitArr[i] > fruitArr[j]){
const maxEl = fruitArr[i]
fruitArr[i] = fruitArr[j]
fruitArr[j] = maxEl
}
}
}
console.log(fruitArr ) //[1, 2, 5, 6, 7]
对象
增加
//方法一直接添加
const weatherInfo = {
tem: '32℃',
weather: '晴'
}
const key = 'date'
const value = new Date().toUTCString()
weatherInfo[key] = value
// weatherInfo.date = new Date().toUTCString()
console.log(weatherInfo) //{tem: '32℃', weather: '晴', date: 'Wed, 14 Dec 2022 13:43:06 GMT'}
//方法二 扩展运算符
let weatherInfo = {
tem: '32℃',
weather: '晴'
}
weatherInfo = {...weatherInfo, date: new Date().toUTCString()}
console.log(weatherInfo) //{tem: '32℃', weather: '晴', date: 'Wed, 14 Dec 2022 13:43:06 GMT'}
// 方法三 Object.assign()
let weatherInfo = {
tem: '32℃',
weather: '晴'
}
weatherInfo =Object.assign(weatherInfo,{ date: new Date().toUTCString()})
console.log(weatherInfo) //{tem: '32℃', weather: '晴', date: 'Wed, 14 Dec 2022 13:43:06 GMT'}
删除
// 方法一delete
let weatherInfo = {
tem: '32℃',
weather: '晴'
}
delete weatherInfo.weather
console.log(weatherInfo) //{tem: '32℃'}
//方法二 es6解构
let weatherInfo = {
tem: '32℃',
weather: '晴'
}
const {weather, ...newWeatherInfo} = weatherInfo
console.log(newWeatherInfo) //{tem: '32℃'}
// 方法三 es6 Reflect.deleteProperty反射
let weatherInfo = {
tem: '32℃',
weather: '晴'
}
Reflect.deleteProperty(weatherInfo, 'weather')
console.log(weatherInfo) //{tem: '32℃'}
修改
const weatherInfo = {
tem: '32℃',
weather: '晴'
}
weatherInfo.tem = '33℃'
console.log(weatherInfo) //{tem: '33℃', weather: '晴'}
查找
// 方法一 hasOwnProperty()
const weatherInfo = {
tem: '32℃',
weather: '晴'
}
const reault = weatherInfo.hasOwnProperty('tem')
console.log(reault) //true
// 方法二 ES6 属性名 in 对象,返回一个布尔值
const weatherInfo = {
tem: '32℃',
weather: '晴'
}
const reault = 'tem' in weatherInfo
console.log(reault) //true
// 方法三 Object.keys获取所有属性组成的数组 indexOf()查找是否包含
const weatherInfo = {
tem: '32℃',
weather: '晴'
}
const reault =Object.keys(weatherInfo).indexOf('tem')
console.log(reault) //0
// 方法四 Object.entries()会返回一个嵌套数组,数组内包括了属性名与属性值
const weatherInfo = {
tem: '32℃',
weather: '晴'
}
const reault = Object.entries(weatherInfo)
console.log(reault) //[['tem', '32℃'], ['weather', '晴']]
// 方法五 Object.getOwnPropertyNames()会返回一个数组包含了对象的所有属性
const weatherInfo = {
tem: '32℃',
weather: '晴'
}
const reault = Object.getOwnPropertyNames(weatherInfo)
console.log(reault) // ['tem', 'weather']
遍历
// 方法一 for in
const weatherInfo = {
tem: '32℃',
weather: '晴',
}
for (const key in weatherInfo) {
console.log(key)
}
//tem weather
// 方法二 Object.keys() 可以遍历到所有对象本身的可枚举属性,返回值为数组
const weatherInfo = {
tem: '32℃',
weather: '晴',
}
Object.keys(weatherInfo).forEach(key => {
console.log(key)
}
)
//tem weather
// 方法三 Object.getOwnPropertyNames() 可以遍历到对象自身属性名组成的数组,包括不可枚举的属性
const weatherInfo = {
tem: '32℃',
weather: '晴',
}
Object.getOwnPropertyNames(weatherInfo).forEach(key => {
console.log(key)
}
)
//tem weather