2017-09-26 10 views
1

私は2つの配列を持っています.1つはピザの詳細、もう1つは注文状態です。 idフィールドは、それらをリンクするフィールドです。したがって、この例では、注文に2ペパーロニと3マルガリータがあります。2列のフィールドをフィルタリングし、ES6 JavaScriptで結合しますか?

const pizzaContent = [ 
    { 
    id: 0, 
    name: 'Pepperoni', 
    price: 20, 
    hot: true, 
    stockQuantity: 3 
    }, 
    { 
    id: 1, 
    name: 'Margarita', 
    price: 25, 
    stockQuantity: 3 
    }, 
    { 
    id: 2, 
    name: 'Hawaiian', 
    price: 15, 
    stockQuantity: 0 
    } 
]; 

const orders = [{ 
    id: 0, 
    quantity: 2 
},{ 
    id: 1, 
    quantity: 3 
}]; 

私はordersから数量とpizzaContentからフィールドを持つ新しい配列を作成しようとしています。順序にないピザは、この配列の一部であってはなりません。

私は、次のと密接得ている:

pizzasInOrder = [ 
    { 
    pizza: {id: 0, name: "Pepperoni", price: 20, hot: true, stockQuantity: 3}, 
    quantity:2 
    }, 
    { 
    pizza: {id: 1, name: "Margarita", price: 25, stockQuantity: 3}, 
    quantity:3 
    } 
] 

しかし、私は必要なのである:しかし

const pizzasInOrder = this.props.orders.map(order => { 
    return (
    { 
     quantity: order.quantity, 
     pizza: this.props.pizzas.find(pizza => { 
     return (
      order.id === pizza.id 
     ); 
     }) 
    } 
) 
}); 

、結果は

pizzasInOrder = [ 
    { 
    id: 0, name: "Pepperoni", price: 20, hot: true, stockQuantity: 3, quantity: 2 
    }, 
    { 
    id: 1, name: "Margarita", price: 25, stockQuantity: 3, quantity: 3 
    } 
] 
+0

は、ちょうど一致するレコードを取得するために、同じインデックスを使用してオーバーidとループ上に2つを並べ替えます。それ以外の場合はidでハッシュします。 –

答えて

1

Object.assign()を使用すると、オブジェクトを1つにマージできます。 IDは常に無穴と一致した場合

例..

const pizzaContent = [ 
 
    { 
 
    id: 0, 
 
    name: 'Peperoni', 
 
    price: 20, 
 
    hot: true, 
 
    stockQuantity: 3 
 
    }, 
 
    { 
 
    id: 1, 
 
    name: 'Margarita', 
 
    price: 25, 
 
    stockQuantity: 3 
 
    }, 
 
    { 
 
    id: 2, 
 
    name: 'Hawian', 
 
    price: 15, 
 
    stockQuantity: 0 
 
    } 
 
]; 
 

 
const orders = [{ 
 
    id: 0, 
 
    quantity: 2 
 
},{ 
 
    id: 1, 
 
    quantity: 3 
 
}]; 
 

 
let pizzasInOrder = orders.map((order) => { 
 
    return Object.assign(order, 
 
    pizzaContent.find(pizza => order.id === pizza.id)); 
 
}); 
 

 
console.log(pizzasInOrder);

2

使用Object.assign余分なキーなし

const pizzasInOrder = this.props.orders.map(order => 
    Object.assign({quantity: order.quantity}, 
     this.props.pizzas.find(pizza => order.id === pizza.id))   
); 
関連する問題