js 对一个字段去重_js 对数组的操作,数组对象去重,合并数组

这篇博客主要介绍了JavaScript中对数组对象的处理技巧,包括如何实现数组对象的去重、改变键名但保持键值不变、将对象键名和键值转化为新数组,以及如何合并两个数组对象和简单数组的合并方法,重点在于循环遍历的实现策略。
摘要由CSDN通过智能技术生成

bbb9e492ad651ef23356f1b763dea927.png

1数组对象去重

 var arr = [{
        key: "01",
        value: "乐乐"
      },
      {
        key: "02",
        value: "博博"
      },
      {
        key: "01",
        value: "乐乐"
      }
    ];
// 用访问对象属性的方法 看对象里是否有key值
   var result = []
      var obj={}
      for(var i=0 ;i<arr.length; i++){
        if(!obj[arr[i].key]){  // 判断对象里是否有key值
          result.push(arr[i])  // 如果没有key值把这一项扔进新的数组!
          obj[arr[i].key]=true   // 扔进新数组后让这个对象保存key值
        }
      } 
 // 方法2 :用 reduce()去重 reduce 第一个参数是要执行的函数 第二个参数是item 的初始值
 var obj = {}
    arr = arr.reduce(function (item, value) {
      obj[value.key] ? '' : obj[value.key] = true && item.push(value)
      return item
    }, [])


2 改变数组对象的键名 键值不变

var arr = [{
        key: "01",
        value: "乐乐"
      },
      {
        key: "02",
        value: "博博"
      },
      {
        key: "01",
        value: "哈哈"
      }
    ];
//  思路 直接往新数组里扔对象
 let newData = []
    arr.forEach(item => {
      newData.push({
        name: item.value,
        age: item.key
      })
    })


3 js数组对象, 取对象键名和键值为新数组

数组格式: 	[{ "app1": 1, "app2": 2 }, { "app1": 8, "app2": 10 }]
期望结果: 
app1: [1,8]
app2:[2,10]
var arr = [{ "app1": 1, "app2": 2 }, { "app1": 8, "app2": 10 }];
var obj = {};
arr.forEach(item => {
  Object.keys(item).forEach(subItem => {
    obj.hasOwnProperty(subItem) ? obj[subItem].push(item[subItem]) : obj[subItem] = [item[subItem]]
  })
})
console.log(obj)  
//打印出:
// {app1: Array(2), app2: Array(2)}
// app1: (2) [1, 8]
// app2: (2) [2, 10]

4 将两个数组对象合并成一个数组

  var obj1 = [{
      "id": 980550455852,
      "model": "XQG70-S1208FW",
      "color": "白",
      "invStatusName": "正品",
      "bactualQty": 10947,
      "brealyQty": 11000,
      "bavailQty": 53
    }, {
      "id": 980550566221,
      "model": "XQB70-C3006",
      "color": "灰",
      "invStatusName": "正品",
      "bactualQty": 11,
      "brealyQty": 6,
      "bavailQty": -5
    }];
    var obj2 = [{
      "price": "6666"
    }, {
      "price": "8888"
    }];
    var obj = obj1.map((item, index) => {
      return {
        ...item,
        ...obj2[index]
      }
    })

5 简单数组合并方法

 //  单个数组合并方法concat 的方法  此方法不改变原数组
    var a = [1, 2, 3]
    var b = [4, 5, 6]
    var c = a.concat(b)
    console.log(c) //[1,2,3,4,5,6]

循环遍历法

var arr1 = ['a', 'b'];
    var arr2 = ['c', 'd', 'e'];
    for (var i = 0; i < arr2.length; i++) {
      arr1.push(arr2[i])
    }
    console.log(arr1); //['a','b','c','d','e']
Array.prototype.push可以实现两个数组合并
 同样的,push方法没有提供push一个数组,但是它提供了push(param1,param,…paramN)所以同样也可以通过apply来装换一下这个数组,即:

var arr1 = [1, 2, 3];
var arr2 = [4, 5, 6];
Array.prototype.push.apply(arr1, arr2);
console.log(arr1);//[ 1, 2, 3, 4, 5, 6 ]
可以这样理解,arr1调用了Array的push方法,参数是通过apply将数组装换为参数列表的集合,其实,arr1也可以调用自己的push方法:


var arr1 = [1, 2, 3];
var arr2 = [4, 5, 6];
arr1.push.apply(arr1, arr2);
console.log(arr1);//[ 1, 2, 3, 4, 5, 6 ]

也就是只要有push方法,arr1就可以利用apply方法来调用该方法,以及使用apply方法将数组转换为一系列参数,所以也可以这样写:


var arr1 = [1, 2, 3];
var arr2 = [4, 5, 6];
[].push.apply(arr1, arr2);
console.log(arr1);//[ 1, 2, 3, 4, 5, 6 ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值