去重1. 简单类型 set对象
const arr = ['张三','张三','三张三']
let set = new Set(arr); // set 自带去重
// Set { '张三', '三张三' }
console.log(set);
console.error(Array.from(set)); // [ '张三', '三张三' ]
去重2, 数组对象类型 reduce:将数组元素处理为一个值(必填参数total 计算后的返回值、curr当前元素)
let person = [
{id: 0, name: "小明"},
{id: 1, name: "小张"},
{id: 2, name: "小李"},
{id: 3, name: "小孙"},
{id: 1, name: "小周"},
{id: 2, name: "小陈"},
];
let obj = {};
let peon = person.reduce((cur,next) => {
obj[next.id] ? "" : obj[next.id] = true && cur.push(next);
return cur;
},[]) //设置cur默认类型为数组,并且初始值为空的数组
console.log(peon);
// (4) [{…}, {…}, {…}, {…}]0: {id: 0, name: "小明"}1: {id: 1, name: "小张"}2: {id: 2, name: "小李"}3: {id: 3, name: "小孙"}length: 4__proto__: Array(0)
相同属性的相加
let obj = {};
const arr = [
{ name: 'A', stock: 1 },
{ name: 'B', stock: 1 },
{ name: 'A', stock: 33 },
{ name: 'B', stock: 2 },
{ name: 'C', stock: 0 }
];
arr.forEach(v=>{
if (obj.hasOwnProperty(v.name)) {
obj[v.name] += v.stock
} else{
obj [v.name] = v.stock
}
})
console.log(obj) //{A: 34, B: 3, C: 0}
hasOwnProperty: 判断某个对象中是否有某个属性,返回值为布尔值
Object.propertype.bar = 1
var fool = {a: 'b'}
fool.bar = 1
fool.hasOwnProperty('bar') // false
fool.hasOwnProperty('a') // true
相同项属性合并数组
var array = [
{name: '张飞', value: '1'},
{name: '张飞', value: '2'},
{name: '张飞', value: '3'},
{name: '关羽', value: '9'},
{name: '关羽', value: '6'},
{name: '刘备', value: '8'},
{name: '刘备', value: '2'},
{name: '刘备', value: '1'}
];
var newArr = [];
for(var i = 0; i< array.length; i++){
var index = newArr.findIndex(function(item) {
return item.name === array[i].name
});
if(index !== -1){
newArr[index].value.push(array[i].value);
}else{
newArr.push({
name: array[i].name,
value: [array[i].value]
})
}
}
console.log(newArr) //[{"name": "张飞","value": ["1","2","3"]}]
字符串全局替换
replace(new RegExp("-","gm"),"/")
根据相同属性合并两个数组
var array1 = [
{"Num": "A", "Name": "t2"},
{"Num": "B", "Name": "t2"}
];
var array2 = [
{"Num": "A","Name": "t1"},
{"Num": "B","Name": "t1"},
{"Num": "C" ,"Name": "t3",age:'222'},
{"Num": "D" ,"Name": "t4",age:'3333'}
];
for(var i = 0; i < array2.length; i++){
var isExist = false;
for(var j = 0; j < array1.length; j++){
if(array1[j].Num == array2[i].Num){
isExist = true;
break;
}
}
if(!isExist){
array1.push(array2[i]);
}
}
console.log(array1);