2017-08-01 18 views
0

配列(from)をlike(to)にしようとしています。配列の値を一致で「qtty」を除外するために私が使用:オブジェクトとネストされた配列を持つ配列をフィルタリングする方法

_.isEqual(_.omit(val, 'qtty'), _.omit(value2, 'qtty')) 

http://underscorejs.org/#isEqualからそれが正しい結果を与えたが、私は怒鳴る実証され、最終的な結果を得ることができないのです。

From = 
0 {itemId: "121", qtty: 1, subitem: [], combo: [{comboId: 201, setId: 29}, {comboId: 201, setId: 28}], addon: []} 
1 {itemId: "121", qtty: 1, subitem: [], combo: [{comboId: 201, setId: 29}, {comboId: 201, setId: 28}], addon: []} 
2 {itemId: "121", qtty: 1, subitem: [{subitemId: 72, state: 1}], combo: [{comboId: 201, setId: 29}, {comboId: 201, setId: 28}], addon: []} 
3 {itemId: "141", qtty: 1, subitem: [], combo: [{comboId: 201, setId: 26}], addon: []} 
4 {itemId: "347", qtty: 1, subitem: [], combo: [], addon: []} 
5 {itemId: "347", qtty: 1, subitem: [], combo: [], addon: []} 



To = 
0 {itemId: "121", qtty: 2, subitem: [], combo: [{comboId: 201, setId: 29}, {comboId: 201, setId: 28}], addon: []} 
1 {itemId: "121", qtty: 1, subitem: [{subitemId: 72, state: 1}], combo: [{comboId: 201, setId: 29}, {comboId: 201, setId: 28}], addon: []} 
2 {itemId: "141", qtty: 1, subitem: [], combo: [{comboId: 201, setId: 26}], addon: []} 
3 {itemId: "347", qtty: 2, subitem: [], combo: [], addon: []} 

答えて

0

私は答えに答えを掲載、それはそれは私の場合のように、より多次元配列で動作させるために少し微調整を必要とぶっきらぼうバニーへhere感謝を発見しました。

function unify(orderData) { 
    var groups = _.groupBy(orderData, function (value) { 
    return value.itemId + '#' + _.map(value.subitem, function (subitemValue) { return subitemValue.subitemId + '#' + subitemValue.state ; }) + '#' + _.map(value.addon, function (addonValue) { return addonValue.addonId + '#' + addonValue.state; }) + '#' + _.map(value.combo, function (comboValue) { return comboValue.comboId + '#' + comboValue.setId; }) ; 
    }); 

    var data = _.map(groups, function (group) { 
    return { 
     itemId: group[0].itemId, 
     subitem: group[0].subitem, 
     addon: group[0].addon, 
     combo: group[0].combo, 
     qtty: _.reduce(_.pluck(group, 'qtty'), function (memo, num) { 
     return memo + num; 
     }, 0) 
    } 
    }); 
    return data; 
} 

ここでの主な違いは、複雑な多次元アレイによってグループにできるように各サブアレイを通してマッピング_.map()あります。

関連する問題