扩展对象(嵌套)

时间:2013-04-06 20:30:03

标签: javascript

在一个section对象中,我有一个CategoryId - 就像一个外键。 现在,我想将每个部分复制到匹配的类别对象中。

来源:

var sections = [{title:"FirstSection", CategoryId : 1},
                {title:"SecondSection", CategoryId : 1}, 
                {title:"ThirdSection", CategoryId : 2}];
var categories = [{title:"Cat1", Id : 1},
                 {title:"Cat2", Id : 2}];

结果如下:

categories = [{title:"Cat1", 
               Id : 1, 
               sections : [{title:"FirstSection", CategoryId : 1},
                           {title:"SecondSection", CategoryId : 1}]
              },
              {title:"Cat2", 
               Id : 1, 
               sections: [{title:"ThirdSection", CategoryId : 2}]
              }];

CategoryId = 1的所有部分现在都属于Id = 1的类别的部分数组。

也许我在搜索错误的关键字,但我无法找到解决方案。

2 个答案:

答案 0 :(得分:1)

在这种情况下,我会使用下划线库(你可以手工完成所有这些)。

http://underscorejs.org/#findWhere

当您遍历类别数组时,您可以轻松地执行以下操作:

_.findWhere(sections, {categoryId: 1});  

此外,您可以使用下划线:

var combined = _.groupBy(categories, function(cat){ 
    cat.sections = _.findWhere(sections, {CategoryId: cat.Id});
    return cat;
 });

结合起来会有你想要的东西。

演示:http://jsfiddle.net/lucuma/kjkkV/1/

答案 1 :(得分:1)

如果supported(> IE8和所有其他浏览器)可以轻松完成此操作...

categories.forEach(function(category) {
    category["sections"] = sections.filter(function(s) {
        return s.CategoryId === category.Id;
    });
});

Example