栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

对数组对象进行一些操作的工具方法,如排序、树状结构转化、查找父级属性等

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

对数组对象进行一些操作的工具方法,如排序、树状结构转化、查找父级属性等

为对象数组排序

一个由对象组成的数组,对数组根据对象的某一个属性进行排序处理

function objSort(objArr, objParamName, type) {
    switch (type) {
        case 'sb':
            objArr.sort((obj1, obj2) => {
                var value1 = obj1[`${objParamName}`]
                var value2 = obj2[`${objParamName}`]
                if (value1 < value2) return -1 //想要value1 < value2的话就返回-1
                else if (value1 > value2) return 1 //想要value1 > value2的话就返回1
                else return 0
            })
            break;
        case 'bs':
            objArr.sort((obj1, obj2) => {
                var value1 = obj1[`${objParamName}`]
                var value2 = obj2[`${objParamName}`]
                if (value1 < value2) return 1 //想要value1 < value2的话就返回-1
                else if (value1 > value2) return -1 //想要value1 > value2的话就返回1
                else return 0
            })
            break;
    }
}
扁平结构数组转化成树状结构数组

在展现一些场景,如多级菜单、多级部门等,通常需要树状结构的数据进行展示,要是后端返回的数据是扁平化结构的,格式如下

let array = [
	{id: '1', parentId: null, ...},
	{id: '2', parentId: null, ...},
	{id: '1_1', parentId: '1', ...},
	{id: '2_1', parentId: '2', ...},
	{id: '2_2', parentId: '2', ...},
	......
]

需要经过处理转化成树状结构,格式如下

[
	{id: '1', parentId: null, children: [{id: '1_1', parentId: '1'}]},
	{id: '2', parentId: null, children: [{id: '2_1', parentId: '2'}, {id: '2_2', parentId: '2']
]
function transformTree(originList, options = {}) {
    const {
        key = 'id',
        parentKey = 'parentId',
        childrenKey = 'children'
    } = options
    function transformTree(list) {
        let tree = [];
        list.forEach((item, index) => {
            if (!item[parentKey]) {
                const temp = queryChildren(item, list);
                tree.push(temp);
            }
        });
        return tree;
    }
    function queryChildren(parent, list) {
        const children = [];
        list.forEach((item, index) => {
            if (parent[key] == item[parentKey]) {
                const temp = queryChildren(item, list);
                children.push(temp);
            }
        });
        if (children.length) parent[childrenKey] = children;
        return parent;
    }
    return transformTree(originList)
}

// 使用
let treeList = transformTree(array)
console.log(treeList)
Array[Object]中根据Object的某一属性(如id)查找父级该属性的值

现在有一个数组,数据如下,查找id是2_1_1的所有父级id

let array = [{
    id: '1', children: [
        {
            id: '1_1', children: [
                { id: '1_1_1', children: [{ id: '1_1_1_1' }] }
            ]
        }
    ]
},
{
    id: '2', children: [
        {
            id: '2_1', children: [
                { id: '2_1_1' },
                { id: '2_1_2' },
                { id: '2_1_3' },
            ]
        },
        { id: '2_2' },
        { id: '2_3' },
    ]
}]
function jsonQueryParentByChild(data, value, paramName, arr = []) {
    data.find(item => {
        if (item[paramName] == value) {
            arr.unshift(item[paramName]);
            return true;
        } else if (item.children && item.children.length) {
            arr = util.jsonQueryParentByChild(
                item.children,
                value,
                paramName,
                arr
            );
            if (arr.length) {
                arr.unshift(item.id);
                return true;
            } else return false;
        }
        return false;
    });
    return arr;
}

// 使用
let result = jsonQueryParentByChild(array, '2_1_1', 'id')
console.log(result) // ['2', '2_1', '2_1_1']
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/999807.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号