JS 多维数组筛选关键字



var data = [
                {
                    categoryName: "扒皮机器人",
                    categoryNumber: "BPJQR",
                    children: [],
                    createDate: "2023-02-22T03:15:05Z",
                    createUserId: 12,
                    deleteFlag: 0,
                    id: 19,
                    idPath: "0,",
                    isRole: undefined,
                    name: "扒皮机器人",
                    nodeKey: 0,
                    orgId: 5,
                    parentId: 0,
                    parentName: null,
                    remark: "",
                    tenantId: 11,
                    title: "扒皮机器人",
                    updateDate: null,
                    updateUserId: null,
                    version: 1
                },
                {
                    categoryName: "扒皮机器人222",
                    categoryNumber: "BPJQR",
                    children: [],
                    createDate: "2023-02-22T03:15:05Z",
                    createUserId: 12,
                    deleteFlag: 0,
                    id: 19,
                    idPath: "0,",
                    isRole: undefined,
                    name: "扒皮机器人222",
                    nodeKey: 0,
                    orgId: 5,
                    parentId: 0,
                    parentName: null,
                    remark: "",
                    tenantId: 11,
                    title: "扒皮机器人222",
                    updateDate: null,
                    updateUserId: null,
                    version: 1
                },
                {
                    categoryName: "测试物料2",
                    categoryNumber: "CSWL2",
                    children: [
                        {
                            categoryName: "11111",
                            categoryNumber: "11111",
                            children: [
                                {
                                    categoryName: "机电",
                                    categoryNumber: "JD",
                                    children: [],
                                    createDate: "2023-02-22T05:57:22Z",
                                    createUserId: 12,
                                    deleteFlag: 0,
                                    id: 20,
                                    idPath: "0,3,5,",
                                    isRole: undefined,
                                    name: "机电",
                                    nodeKey: 3,
                                    orgId: 5,
                                    parentId: 5,
                                    parentName: "11111",
                                    remark: "",
                                    tenantId: 11,
                                    title: "机电",
                                    updateDate: null,
                                    updateUserId: null,
                                    version: 1
                                },
                                {
                                    categoryName: "22222",
                                    categoryNumber: "22222",
                                    children: [],
                                    createDate: "2023-02-22T03:01:21Z",
                                    createUserId: 12,
                                    deleteFlag: 0,
                                    id: 6,
                                    idPath: "0,3,5,",
                                    isRole: undefined,
                                    name: "22222",
                                    nodeKey: 7,
                                    orgId: 5,
                                    parentId: 5,
                                    parentName: "11111",
                                    remark: "",
                                    tenantId: 11,
                                    title: "22222",
                                    updateDate: null,
                                    updateUserId: null,
                                    version: 1
                                }
                            ],
                            createDate: "2023-02-22T03:01:15Z",
                            createUserId: 12,
                            deleteFlag: 0,
                            expand: true,
                            id: 5,
                            idPath: "0,3,",
                            isRole: undefined,
                            name: "11111",
                            nodeKey: 2,
                            orgId: 5,
                            parentId: 3,
                            parentName: "测试物料2",
                            remark: "",
                            tenantId: 11,
                            title: "11111",
                            updateDate: null,
                            updateUserId: null,
                            version: 1
                        }
                    ],
                    createDate: "2022-12-26T06:44:31Z",
                    createUserId: 14,
                    deleteFlag: 0,
                    expand: true,
                    id: 3,
                    idPath: "0,",
                    isRole: undefined,
                    name: "测试物料2",
                    nodeKey: 1,
                    orgId: 5,
                    parentId: 0,
                    parentName: null,
                    remark: "测试物料2",
                    tenantId: 11,
                    title: "测试物料2",
                    updateDate: null,
                    updateUserId: null,
                    version: 1
                }
            ];
var query = '2';
var filterObj = function(item){
    if(item.name.indexOf(query) > -1) return true;
    if(item.hasOwnProperty("children")){
        item.children = item.children.filter(function(child){
	    if (child.children && child.children.length) {
		return filterObj(child);
	    } else {
		return child.name.indexOf(query) > -1;
	    }
        })
        if(item.children.length > 0){
            return true;
        }
    }else{
        return child.name.indexOf(query) > -1;
    }
}
var filter = data.filter(function(item){
    return filterObj(item);
});

console.log(filter);

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Back To Top

鄂ICP备17008157号-1