去重、合并相同属性值、相同项属性合并数组、字符串全局替换、根据相同属性合并两个数组
去重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);