【问题标题】:Array split with the help of object categories values of array- Javascript - High Chart借助数组的对象类别值拆分数组 - Javascript - 高图表
【发布时间】:2016-05-11 07:49:40
【问题描述】:

我有一个数组的结果,其中包含多个对象,需要借助类别进行拆分。当总和的类别数组值达到 15 时,该数组将像下面的结果一样被拆分。

非常感谢您的帮助

数组

 [Object { name="A",  categories=[2]}, Object { name="B",  categories=[3]}, Object { name="C",  categories=[1]}, Object { name="D",  categories=[1]}, Object { name="E",  categories=[1]}, Object { name="F",  categories=[3]}, Object { name="G",  categories=[1]}, Object { name="H",  categories=[1]}, Object { name="I",  categories=[1]}, Object { name="J",  categories=[3]}, Object { name="K",  categories=[2]}, Object { name="L",  categories=[2]}, Object { name="M",  categories=[2]}]

更多细节

[{"name":"A","categories":["543","301"]},{"name":"B","categories":["100","120","390"]},{"name":"C","categories":["453"]},{"name":"D","categories":["112"]},{"name":"E","categories":["542"]},{"name":"F","categories":["534","545","547"]},{"name":"G","categories":[" 535"]},{"name":"H","categories":["390"]},{"name":"I","categories":["528"]},{"name":"J","categories":["101","492"," 320"]},{"name":"K","categories":["201","210"]},{"name":"L","categories":["102","573"]},{"name":"M","categories":["211","220"]}]

想要的结果

[[{"name":"A","categories":["543","301"]},{"name":"B","categories":["100","120","390"]},{"name":"C","categories":["453"]},{"name":"D","categories":["112"]},{"name":"E","categories":["542"]},{"name":"F","categories":["534","545","547"]},{"name":"G","categories":[" 535"]},{"name":"H","categories":["390"]},{"name":"I","categories":["528"]},{"name":"J","categories":["101"]}],[{"name":"J","categories":["492"," 320"]},{"name":"K","categories":["201","210"]},{"name":"L","categories":["102","573"]},{"name":"M","categories":["211","220"]}]]

此结果部分将为您提供有关所需结果的更多帮助

{"name":"J","categories":["101"]}],[{"name":"J","categories":["492"," 320"]}

【问题讨论】:

    标签: javascript arrays object highcharts split


    【解决方案1】:

    一个带有Array.prototype.reduce() 和一个临时对象的提案。

    var array = [{ "name": "A", "categories": ["543", "301"] }, { "name": "B", "categories": ["100", "120", "390"] }, { "name": "C", "categories": ["453"] }, { "name": "D", "categories": ["112"] }, { "name": "E", "categories": ["542"] }, { "name": "F", "categories": ["534", "545", "547"] }, { "name": "G", "categories": [" 535"] }, { "name": "H", "categories": ["390"] }, { "name": "I", "categories": ["528"] }, { "name": "J", "categories": ["101", "492", "320"] }, { "name": "K", "categories": ["201", "210"] }, { "name": "L", "categories": ["102", "573"] }, { "name": "M", "categories": ["211", "220"] }],
        result = array.reduce(function (r, a) {
            a.categories.forEach(function (b, i) {
                var o = { name: a.name, categories: [] };
                r.count++;
                if (!r.refA || r.count > 15) {
                    r.count = 1;
                    r.refA = [];
                    r.array.push(r.refA);
                    i = 0;
                }
                if (!i) {
                    r.refA.push(o);
                    r.refB = o.categories;
                }
                r.refB.push(b);
            });
            return r;
        }, { array: [], count: 0, refA: undefined, refB: undefined }).array;
    
    document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');

    【讨论】:

    • 感谢您的回答,但我需要返回这样结果的函数。 {"name":"J","categories":["101"]}],[{"name":"J","categories":["492"," 320"]}
    • 它现在可以工作并满足我的要求。谢谢!你拯救了我的一天
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2015-06-24
    • 2015-10-16
    • 2021-09-14
    • 1970-01-01
    • 2021-06-01
    相关资源
    最近更新 更多