前言
平常开发对数组的应用,浅记录一下
合并相同属性的对象生成新数组
var array= [{
"id":"1",
"name":"小明",
"course":"语文"
}, {
"id":"2",
"name":"小张",
"course":"政治"
}, {
"id":"2",
"name":"小张",
"course":"政治"
}]
/**
* @method
* @array 数组
* @key 属性值
*/
handleArr = (array, key) => {
var obj = {}; var newArr = [];
array.forEach((item) => {
// 根据对象的属性是唯一的,将值作为对象的属性名
if (!obj[item[key]]) {
var arr = [];
arr.push(item);
newArr.push(arr);
obj[item[key]] = item;
} else {
newArr.forEach((value) => {
// 如果已经存在 就循环新组的值将值插入属性相同的数组里 为了防止重复添加 只要和第一个比较就可以了
if (value[0][key] == item[key]) {
value.push(item);
}
});
}
});
return newArr;
}
const result = handleArr(array,'id')
纯前端过滤数组,通常表格筛选用到
var array= [{
"id":"1",
"name":"小明",
"course":"语文"
}, {
"id":"2",
"name":"小张",
"course":"政治"
}, {
"id":"2",
"name":"小张",
"course":"政治"
}]
var filters={
name:'小张'
}
/**
* @method
* @array 数组
* @filters 筛选对象
*/
filterArr(array, filters) {
const filterKeys = Object.keys(filters);
return array.filter((item) =>
filterKeys.every((key) => {
if (!filters[key].length) { return true; }
return !!~item[key].indexOf(filters[key]);
}));
}
const result = handleArr(array,filters)
根据对象属性求和
var array= [{
"id":"1",
"name":"小明",
"course":13
}, {
"id":"2",
"name":"小张",
"course":12
}, {
"id":"2",
"name":"小张",
"course":11
}]
/**
* @method
* @array 数组
* @key 属性值
*/
reduceArr(array, key) {
var sum = result.reduce(function(prev, cur) {
return cur[key] + prev;
}, 0);
}
var sum = reduceArr(array,'course')
···
##判断数组元素是否一致
```javascript
isAllEqual(array) {
if (array.length > 0) {
return !array.some(function(value, index) {
return value !== array[0]
})
} else {
return true
}
}