【JS算法】数组的各种方法在增删改查的重要作用(写后台管理的心得总结)

目录

添加数据 push()、unshift()、splice()

删除数据 pop()、shift()、slice()、splice()

修改数据 filter()、reverse()

查找数据 every()、some()、indexOf、lastIndexOf()、map()、forEach()


添加数据 push()、unshift()、splice()

 push()、unshift()、splice()

push():在数组末尾插入数据

下面的例子都是将新的属性添加到原来的数据中: 

 this.spu.spuSaleAttrList.push(newSaleAttr)
row.spuSaleAttrValueList.push(newSaleAttrValue)

 

unshift():在数组开头插入数据

 

删除数据 pop()、shift()、slice()、splice()

pop()、shift()、splice()

pop():从数组末尾删除数据

 

shift():删除数组开头的数据 

 

slice():传入索引值,将数组里对应索引范围内的元素作为新数组返回

slice(开始截取的索引,结束截取的索引)

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

 负数是从末尾开始

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

 

splice():

splice既可以添加数据也可以删除数据

number.splice(5,3)代表删除了从数组索引5开始的3个元素。

var arr = [1,2,3];
arr.splice(1,1)
console.log(arr);//[1,3]

number.splice(5,0,2,3,4) 代表把2、3、4插入数组里。

splice方法接收的第一个参数,表示想要删除或者插入的元素的索引值第二个参数删除元素的个数(这个例子中,我们的目的不是删除元素,所以传入0)。第三个参数往后,就是想要添加到数组里的值(2、3、4)。

var arr = [1,2,3];
arr.splice(3,0,4) //从索引3开始删除0个添加数字4
console.log(arr); //[1,2,3,4]

 

修改数据 filter()、reverse()

filter():对数组中的每个元素运行给定函数返回该函数会返回true的元素组成的数组

 this.attrInfo.attrValueList = this.attrInfo.attrValueList.filter(item=>{
     //过滤掉属性值不为空的
     if(item.valueName!=""){
       //删除掉flag属性
          delete item.flag
          return true
      } 
})

 

reserve()颠倒数组中元素的顺序,原先第一个元素现在变成最后一个,同样原先最后一个元素变成了第一个。

 

查找数据 every()、some()、indexOf、lastIndexOf()、map()、forEach()

every():every方法会迭代数组中的每一个元素,对数组中的每个元素运行给定函数,如果该函数对每个元素都返回true,则返回true

下面的例子是让输入的值不能和已有的值相等:  

//输入的值不能重复
let result = row.spuSaleAttrValueList.every(item=>item.saleAttrValueName!=inputValue)
if(!result) 
  return
//计算出还没选择的销售属性
  unSelectSaleAttr(){
       //当前spu拥有的属于自己的销售属性spu.spuSaleAttrList  颜色
       //数组的过滤方法,可以从已有的数组当中过滤出用户需要的元素,并返回一个新的数据
        let result = this.saleAttrList.filter(item=>{
            //every会返回一个布尔值
            return this.spu.spuSaleAttrList.every(item1=>{
               return item.name !=item1.saleAttrName
            })
        })
         return result
}

 

some():some方法的行为和every方法相反,对数组中的每个元素运行给定函数,如果任何一个元素返回true,则返回true

下面的例子是让输入的值不能和已有的值相等,相等则return。 

//输入的值不能重复
let result = row.spuSaleAttrValueList.some(item=>item.saleAttrValueName==inputValue)
if(result) 
  return

 

indexOf():返回第一个与给定参数相等的数组元素的索引没有找到则返回-1。

var arr = [1,2,3,5,6,7];
console.log(arr.indexOf(6)) //4 返回索引位置。
console.log(arr.indexOf(8)) //-1

 数组去重

var arr1 = [1,3,4,5,5,6,1,2,3,5,4,4,8,8,9,6];
        function find() {
            var newArr = [];
            for (var i = 0; i < arr1.length; i++) {
                if (newArr.indexOf(arr1[i]) == -1) {
                    newArr.push(arr1[i]);
                }
            }
            document.write(newArr);
        }
        find(arr1);

 

 

lastIndexOf():返回在数组中搜索到的与给定参数相等的元素的索引里最大的值。

与indexOf相反,indexOf是首次出现而lastIndexOf是最后出现。 

var arr = [1, 2, 2, 3, 3, 4,4];
console.log(arr.lastIndexOf(3)) //4 返回索引位置。
console.log(arr.lastIndexOf(8)) //-1

 

map():对数组中的每个元素运行给定函数返回每次函数调用结果组成的数组

this.spu.spuImageList = this.spuImageList.map(item=>{
    return {
         imageName:item.name,
         imageUrl:(item.response && item.response.data)||item.url
    }
})

 

forEach():它和使用for循环的结果相同。对数组中的每个元素运行给定函数,这个方法没有返回值。

listArr.forEach(item => {
     item.name = item.imgName
     item.url = item.imgUrl
});

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翘阳啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值