js 对象覆盖合并, 一维数组、二维数组(某个属性或者根据二维数组几个值,去重)去重方法

<!--markdown-->判断是否是数组
Array.isArray([1, 2, 3]);  // true
Array.isArray({foo: 123}); // false
Array.isArray('foobar');   // false
Array.isArray(undefined);  // false
对象覆盖合并
覆盖有先后顺序,有相同的key,后面的会覆盖前面的,没有则添加
let o1 = { a: 1 };
let o2 = { b: 2 };
let o3 = { c: 3 };
let obj = Object.assign(o1, o2, o3);
console.log(obj); // { a: 1, b: 2, c: 3 }
console.log(o1);  // { a: 1, b: 2, c: 3 }, target对象自身会被修改
如果想要避免o1被改变,需要这样写:
//给一个空对象作为target,这样改变的是空对象
let obj = Object.assign({},o1,o2,o3);
console.log(obj);// { a: 1, b: 2, c: 3 }
console.log(o1); // { a: 1}
ES6 写法
const basicConfig = {
width: 800,
height:600,
webPreferences: {
nodeIntegration: true, // 可以使用node语法
},
};
const config = {
width: 300,
height:300,
webPreferences: {
nodeIntegration: true, // 可以使用node语法
},
};
//es5
const finalConfig = Object.assign(basicConfig, config);
//es6
const finalConfig = {...basicConfig, ...config};
去重
1.使用ES6语法 set方法数组去重::
a=[1,2,3,4,1,2,3,4];
[...new Set(a)];  //[1, 2, 3, 4]
2.一维数组去重方法
function unique1(array){
var n = []; //一个新的临时数组
```
for(var i = 0; i < array.length; i++){
   if (n.indexOf(array[i]) == -1) n.push(array[i]);
}
return n;
```
3.二维数组去重方法
var unique1 = function(arr) {
var i = 0,
j = arr.length,
cache = {},
key, result = [];
for (; i < j; i++) {
key = arr[i][0];
key = typeof(key) + key;
if (!cache[key]) {
cache[key] = 1;
result.push(arr[i]);
}
}
return result;
};
4.根据二维数组的某一个属性去重
let arr = [
{
id:'232122',
name: '张三'
},{
id:'12122',
name:'王二',
}];
//根据数组中的id属性去重
function unique(arr1) {
const res = new Map();
return arr1.filter((a) => !res.has(a.id) && res.set(a.id, 1))
}
5.根据二维数组的几个值相同去重
let arr1 = [
[1, 2, 3, 4],
[1, 22, 31, 4],
[1, 22, 32, 4],
[1, 222, 3, 4],
[1, 22, 33, 4],
[1, 2222, 34, 4],
[1, 2222, 34, 5],
[1, 2, 3, 4],
[2, 2, 3, 4], [1, 2, 3, 4],
]
function unique(arr1) {
const res = new Map();
return arr1.filter((a) => !res.has(a[1] + ' ' + a[2]) && res.set(a[1] + ' ' + a[2], 1))
}
//[ [ 1, 2, 3, 4 ],
[ 1, 22, 31, 4 ],
[ 1, 22, 32, 4 ],
[ 1, 222, 3, 4 ],
[ 1, 22, 33, 4 ],
[ 1, 2222, 34, 4 ] ]

版权声明:
作者:tianya
链接:https://tya.zone/p/85.html
来源:天涯博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
js 对象覆盖合并, 一维数组、二维数组(某个属性或者根据二维数组几个值,去重)去重方法
<!--markdown-->判断是否是数组 Array.isArray([1, 2, 3]);  // true Array.isArray({foo: 123}); // false Array.isArray('foobar');   // false Arra……
<<上一篇
下一篇>>