Nested Grouping Item list based on the Custom fields

                _.each(this.result.group, function(line) {
                    var eachline = self.cleanobj(line)
                    var listkeys = Object.keys(eachline)
                    var evens = _.filter(listkeys, function(line) { return line != 'subtitle' });
                    if (evens.length == 1) {
                        _.each(groupinglist, function(itemlist) {
                            var sample = false
                            if (Array.isArray(line[evens]) === true && Array.isArray(itemlist[evens]) === true) {
                                sample = _.intersection(itemlist[evens], line[evens]).length != 0 ? true : false
                            } else if (Array.isArray(itemlist[evens]) === false) {

                                sample = line[evens].includes(itemlist[evens])
                            } else {

                                sample = itemlist[evens].includes(line[evens])
                            }
                            if (sample === true) {
                                groupped.push(itemlist)
                                groupinglist = _.filter(groupinglist, function(list) {
                                    return list.id != itemlist.id;
                                });
                            }

                        })
                        if (groupped.length > 0) {
                            finalgroups.push({ "item": groupped, "groupname": line.subtitle })
                        }
                        groupped = []
                    } else {
                        _.each(evens, function(eacheven) {
                            _.each(groupinglist, function(itemlist) {
                                var sample = false
                                if (Array.isArray(line[eacheven]) === true && Array.isArray(itemlist[eacheven]) === true) {
                                    sample = _.intersection(itemlist[eacheven], line[eacheven]).length != 0 ? true : false
                                } else if (Array.isArray(itemlist[eacheven]) === false) {

                                    sample = line[eacheven].includes(itemlist[eacheven])
                                } else {

                                    sample = itemlist[eacheven].includes(line[eacheven])
                                }
                                if (sample === true) {
                                    groupped.push(itemlist)
                                    groupinglist = _.filter(groupinglist, function(list) {
                                        return list.id != itemlist.id;
                                    });
                                }

                            })
                        })
                        if (groupped.length > 0) {
                            finalgroups.push({ "item": groupped, "groupname": line.subtitle })
                        }
                        groupped = []
                    }

                })

Leave a comment

Your email address will not be published. Required fields are marked *