数组、对象的增、删、改、查、遍历常用方法

数组

增加

  1. 通过length

        const fruitArr = ['苹果', '橘子', '梨']
        fruitArr[fruitArr.length] = '香蕉'
        console.log('fruitArr', fruitArr) //['苹果', '橘子', '梨', '香蕉']
    
  2. 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) // ['苹果', '橘子', '梨', '香蕉']
    
  3. 合并数组

    let fruitArr = ['苹果', '橘子', '梨']
    fruitArr  = fruitArr.concat('香蕉' )
    console.log('newArr', fruitArr ) // ['苹果', '橘子', '梨', '香蕉']
    
  4. 展开运算符

    // ...
    let fruitArr = ['苹果', '橘子', '梨']
    fruitArr  =[...fruitArr, '香蕉']
    console.log('newArr', fruitArr ) // ['苹果', '橘子', '梨', '香蕉']
    

删除

  1. length

    const fruitArr = ['苹果', '橘子', '梨']
    fruitArr.length = 2
    console.log('fruitArr', fruitArr) //['苹果', '橘子']
    
  2. delete

    const fruitArr = ['苹果', '橘子', '梨']
    delete fruitArr[2]
    console.log('fruitArr', fruitArr) // ['苹果', '橘子', empty]
    
  3. 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) //  ['苹果', '橘子']
    
  4. filter

    let fruitArr = ['苹果', '橘子', '梨']
    fruitArr  = fruitArr.filter(item =>  item !== '梨')
    console.log('newArr', fruitArr ) // ['苹果', '橘子']
    
  5. 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
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值