如何使用UnderscoreJS通过'id'联合/合并两个集合

use*_*813 3 javascript javascript-objects backbone.js underscore.js

我有两个收藏(菜单和订单)

菜单集包含Item对象的数组

[{'id': '1', 'name': 'apple'}, {'id': '2', 'name': 'orange'}]
Run Code Online (Sandbox Code Playgroud)

订单采集也包含项目对象的数组

[{'id': '1', 'quantity': '0'}]
Run Code Online (Sandbox Code Playgroud)

我希望它们通过ID将它们的属性合并到另一个集合中(这仅用于模板目的):

[{'id': '1', 'name': 'apple', 'quantity': '1'}, {'id': '2', 'name': 'orange'}]
Run Code Online (Sandbox Code Playgroud)

是否有下划线方法或我需要为此定义一个函数?[似乎我在下划线上尝试了所有合并函数,但它们都没有按我预期的方式工作]

nai*_*vin 6

不要认为在underscore.js中定义了一个函数,但是一种方法是使用_.map_.find函数,如下所示,

var menus = [{'id': '1', 'name': 'apple'}, {'id': '2', 'name': 'orange'}];

var orders = [{'id': '1', 'quantity': '0'}];

var newMenu = _.map(menus, function (menu) {  
    var order = _.find(orders, function (o) { 
        return o.id == menu.id;
    }); 
    return _.extend(menu, order); 
});

console.log(newMenu);
Run Code Online (Sandbox Code Playgroud)