/**
* 数组按指定字段排序
* @param itemlist
* @param gby
* @param keyName
* @param valueName
* @returns {Array}
* @constructor
*/
function ArrayGroupBy (itemlist, gby, keyName = 'key', valueName = 'value') {
var setGroupObj = function (noteObj, rule, gby, gIndex, maxIndex) {
var gname = rule[gby[gIndex]];
if (gIndex == maxIndex) {
if (noteObj[gname] == undefined)
noteObj[gname] = [];
if (noteObj[gname].indexOf(rule) < 0) {
noteObj[gname].push(rule);
}
}
else {
if (noteObj[gname] == undefined) {
noteObj[gname] = {};
}
setGroupObj(noteObj[gname], rule, gby, gIndex + 1, maxIndex);
}
}
var noteObj = {};
for (var i = 0; i < itemlist.length; i++) {
setGroupObj(noteObj, itemlist[i], gby, 0, gby.length - 1);
}
var getSubInfo = function (note, p, gIndex, maxIndex) {
var newobj = {}
newobj[keyName] = p;
newobj[valueName] = [];
if (gIndex == maxIndex) {
for (var k in note[p]) {
newobj[valueName].push(note[p][k]);
}
}
else {
for (var k in note[p]) {
newobj[valueName].push(getSubInfo(note[p][k], k, gIndex + 1, maxIndex));
}
}
return newobj;
}
var myobj = [];
for (var p in noteObj) {
myobj.push(getSubInfo(noteObj, p, 0, gby.length - 1));
}
return myobj;
}
javascript ArrayGroupBy
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- varstr ="China,中国";window.btoa(window.encodeURIComponent(...
- 第1章 JavaScript 简介 1.1 JavaScript 组成: 核心(ECMAScript) + 文档对...
- React is a JavaScript library, and so it assumes you have...
- COVER:https://blog.csdn.net/u010323023/article/details/52...
- update:2017-10-23 更新了文中一些表达以及添加了JS编译部分的理解。2018-06-06 这篇...