我有一个 JSON 数组对象,如下所示:

var orders = [{
    orderId: 1,
    firstName: 'John',
    lastName: 'Smith',
    address: {
        street: '123 Main Street',
        city: 'New York',
        zip: 10001
    }
}, {
    orderId: 2,
    firstName: 'John',
    lastName: 'Smith',
    address: {
        street: '456 Main Street',
        city: 'New York',
        zip: 10001
    }
}, {
    orderId: 3,
    firstName: 'John',
    lastName: 'Smith',
    address: {
        street: '123 Main Street',
        city: 'New York',
        zip: 10001
    }
}, {
    orderId: 4,
    firstName: 'John',
    lastName: 'Smith',
    address: {
        street: '123 Main Street',
        city: 'New York',
        zip: 10002
    }
}];

我正在尝试使用 underscore.js 创建一个新的数组对象,按地址分组以满足显示所有已发货到 123 Main Street, New York, 1001 的订单的用例。
underscore.js 是正确的方法吗?如果是这样,我应该怎么做?任何提示都会有所帮助。

最佳答案

_.groupBy

console.log(_.groupBy(orders, function(obj){
    return obj.address.street + '|' + obj.address.city + '|' + obj.address.zip;
}));

http://jsfiddle.net/mendesjuan/gc47ruyL/1/

此示例假定地址中不能有 |,您可能需要更好的分隔符,或使用 JSON.stringify :
console.log(_.groupBy(orders, function(obj){
    return JSON.stringify([obj.address.street, obj.address.city, obj.address.zip]);
}));

关于javascript - 使用 Underscore JS 在 JSON 数组上分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27238691/

10-11 15:05