ES6 简洁算法
// 并集
let union = a.concat(b.filter(v => !a.includes(v))) // [1,2,3,4,5]
// 交集
let intersection = a.filter(v => b.includes(v)) // [2]
// 差集
let difference = a.concat(b).filter(v => a.includes(v) && !b.includes(v)) // [1,3]
JSON按照多个字段去排序
//按照多个字段排序
function compare(name, minor) {
return function(o, p) {
var a, b;
if (o && p && typeof o === 'object' && typeof p === 'object') {
a = o[name];
b = p[name];
if (a === b) {
return typeof minor === 'function' ? minor(o, p) : 0;
}
if (typeof a === typeof b) {
return a < b ? -1 : 1;
}
return typeof a < typeof b ? -1 : 1;
} else {
thro("error");
}
}
}
拿到2个数组的差值
a.filter(key => !b.includes(key))
对比2个JSON数组 拿到MAC_NBR相同的差值
var resultArrSole = [];
for (var i = 0; i < dataArrEndArr.length; i++) {
var obj = dataArrEndArr[i];
var num = obj.MAC_NBR;
var flag = false;
for (var j = 0; j < dataArrGroup.length; j++) {
var aj = dataArrGroup[j];
var n = aj.MAC_NBR;
if (n == num) {
flag = true;
break;
}
}
if (!flag) {
resultArrSole.push(obj);
}
}
json中去掉相同的,并且把相同的值的别的属性变成数组。
dataArrGroup = dataArrGroup.map(function(item, index, arr) {
const i = arr.find(_item => item.group === _item.group);
if (i !== item) {
i.name.push(item.name);
i.value.push(item.value);
return undefined;
} else {
i.name = [i.name];
i.value = [i.value];
return i;
}
}).filter(item => item !== undefined);
删除JSON指定对象
var array = [
{
id : 1,
flag : 1
},
{
id : 2,
flag : 2
},
{
id : 3,
flag : 1
}
];
var result = array.filter(function(item){ return item.flag != 2});
console.log(result);
删除JSON相同字段
function unique(list) {
var arr = [];
for (var i = 0; i < list.length; i++) {
if (i == 0) arr.push(list[i]);
b = false;
if (arr.length > 0 && i > 0) {
for (var j = 0; j < arr.length; j++) {
if (arr[j].COMPANY_NAME == list[i].COMPANY_NAME) {
b = true;
//break;
}
}
if (!b) { arr.push(list[i]); }
}
}
return arr;
}
JS获取JSON对象数组某个属性最大值
var name_value= [{"name":"闵行区","value":20},{"name":"浦东新区","value":30},{"name":"杨浦区","value":10}]
var list = new Array();
for(var i in name_value){
list.push(name_value[i].value);
}
list.sort(function(num1,num2){
return num1-num2;
})
var maxcnt= eval(list[list.length-1]);
删除数组中text一样的
Array.prototype.removeRepeatAttr = function() {
var tmp = {},
b = [],
a = this;
for (var i = 0; i < a.length; i++) {
if (!tmp[a[i].text]) {
b.push(a[i]);
tmp[a[i].text] = !0;
}
};
return b;
}
拿到数组中最大的数和最小的数,算出差值
var dataArr = [112,2,3,111,4,5,8,4,1];
function countArr(a){
return Math.max.apply(Array,a) - Math.min.apply(Array,a);
}
console.log(countArr(dataArr));
数组去空字符串 [1,2,"",3,""]
function RemoveEmptyArray(arr){
this.arr=arr;
var result=[]
for(var i=0;i<this.arr.length;i++){
this.arr[i]!=""&&result.push(this.arr[i])
}
return result;
}
数组去除逗号[1,,,2,,,3]
function RemoveCommaArray(arr){
this.arr=arr;
var result=[]
for(var i=0;i<this.arr.length;i++){
this.arr[i]!=undefined&&result.push(this.arr[i])
}
return result;
}
数组去重
Array.from(new Set(arr));
实现随意颜色
function randomColor() {
var r = parseInt(Math.random() * 256, 10) + 1;
var g = parseInt(Math.random() * 256, 10) + 1;
var b = parseInt(Math.random() * 256, 10) + 1;
return 'rgb(' + r + ',' + g + ',' + b + ')';
}
网友评论