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 ]