数组中的Javascript/Jquery OOP数组

数组中的Javascript/Jquery OOP数组,javascript,jquery,Javascript,Jquery,简言之,我正在对我的数据库进行REST调用,并获得一份配料列表。JSON看起来像: [{"SubItemID":1,"MainItemID":1,"SubName":"2%","MainName":"Milk"}, {"SubItemID":2,"MainItemID":1,"SubName":"Skim/Fat Free","MainName":"Milk"}, {"SubItemID":3,"MainItemID":2,"SubName":"Chedder","MainName":"Chee

简言之,我正在对我的数据库进行REST调用,并获得一份配料列表。JSON看起来像:

[{"SubItemID":1,"MainItemID":1,"SubName":"2%","MainName":"Milk"},
{"SubItemID":2,"MainItemID":1,"SubName":"Skim/Fat Free","MainName":"Milk"},
{"SubItemID":3,"MainItemID":2,"SubName":"Chedder","MainName":"Cheese"}]
我要做的是将其转换为一个有用的数组,该数组的组织形式如下:
  • 牛奶
  • 2%脱脂/脱脂
  • 奶酪切丁
  • 除了像那样订购外,我还想维护与每个项目相关联的ID。所以奶酪会有“2”,切德尔会有“3”

    我已经能够将牛奶和奶酪的独特价值输入到一个数组中,但我不知道如何继续。敬请指教

    以下是我目前掌握的情况:

            $.ajax({
                url: "../api/IngredientChoices",
                contentType: "json",
                success: function (data) {
                    var _subCategories = {};
                    var _mainCategories = [];
                    $.each(data, function (index, item) {
                        if ($.inArray(item.MainName, _mainCategories) === -1) {
                            _mainCategories.push(item.MainName);
                        }
                    });
                    $.each(_mainCategories, function () {
                        alert(this);
                    });
                }
            });
    

    详细的工作答案。数据将添加到关联数组中

    obj = JSON.parse(data);
    
    console.log(obj);
    
    d = {}
    
    $.each(obj, function (index, item) {
        if (!(item.MainItemID in d)) {
            d[item.MainItemID] = [];
            d[item.MainItemID][0] = item.MainName;
            d[item.MainItemID][1] = {}
        }
    
        d[item.MainItemID][1][item.SubItemID] = item.SubName;
    });
    
    console.log(d);
    
    输出:

    Object {1: Array[2], 2: Array[2]}
    1: Array[2]
        0: "Milk"
            1: "2%"
            2: "Skim/Fat Free"
    2: Array[2]
        0: "Cheese"
            3: "Chedder"
    

    详细的工作答案。数据将添加到关联数组中

    obj = JSON.parse(data);
    
    console.log(obj);
    
    d = {}
    
    $.each(obj, function (index, item) {
        if (!(item.MainItemID in d)) {
            d[item.MainItemID] = [];
            d[item.MainItemID][0] = item.MainName;
            d[item.MainItemID][1] = {}
        }
    
        d[item.MainItemID][1][item.SubItemID] = item.SubName;
    });
    
    console.log(d);
    
    输出:

    Object {1: Array[2], 2: Array[2]}
    1: Array[2]
        0: "Milk"
            1: "2%"
            2: "Skim/Fat Free"
    2: Array[2]
        0: "Cheese"
            3: "Chedder"
    

    您可能需要编辑您的问题。您想要的“有用”数组实际上不是数组。您可能需要以下内容:
    [
      {
       名称:'牛奶',
       子类型:['2%,'Fat Free'],
      },
      {
       名称:奶酪,
       子类型:[“切达”],
      }

    ]
    您可能需要编辑您的问题。您需要的“有用”数组实际上不是数组。您可能需要以下内容:
    [
      {
       名称:'牛奶',
       子类型:['2%,'Fat Free'],
      },
      {
       名称:奶酪,
       子类型:[“切达”],
      }
    ]

    您可以在对象集合中设置一个数组,这样您就可以对其进行排序:

    var dataArray = [];
    
    for(var k in ordered) {
      dataArray.push(ordered[k]);
    }
    
    console.log(dataArray);
    
    如果您计划更复杂的数据解析或操作,我会推荐一些模型/收集框架,如:,甚至使用or。

    您可以在对象集合中设置一个数组,这样您就可以对其进行排序:

    var dataArray = [];
    
    for(var k in ordered) {
      dataArray.push(ordered[k]);
    }
    
    console.log(dataArray);
    

    如果您计划更复杂的数据解析或操作,我会推荐一些模型/收集框架,比如:,甚至使用or。

    您使用的是JSON
    parse()
    ?@ATOzTOA我添加了我当前的Ajax代码您使用的是JSON
    parse()吗
    ?@ATOzTOA我添加了我当前的Ajax代码。我认为OP是在问如何重构JSON,而不是如何解析。我认为OP是在问如何重构JSON,而不是如何解析JSON。你没有得到
    MainName
    。你没有得到
    MainName