簡體   English   中英

使用Underscore JS在JSON數組上分組

[英]Group by on JSON array using Underscore JS

我有一個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]);
}));

如果您的頁面中已經有下划線,則可以使用

var filteredOrders = _.filter(orders, function(order){
  return (order.address.street === '123 Main Street') &&
          (order.address.city === 'New York') &&
          (order.address.zip === 10001);
});

小提琴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM