2017-02-24 76 views
0

給定此數組var array = [{a:1, b: 2, c: 3}, {a: 2, b: 4, c: 4}]Lodash未執行嵌套方法,

我想遍歷數組中的每個項目,並省略密鑰c,它的值是使用lodash。

這裏是我試過

_.each(array, function (obj) { return _.omit(obj, ['a']); });

方法

期望輸出應該是// [{b: 2, c: 3}, {b: 4, c: 4} ] 但lodash返回原始陣列// [{a:1, b: 2, c: 3}, {a: 2, b: 4, c: 4}]

+1

我猜你的意思是你想省略'了'? – irbanana

回答

1

而不是forEach()返回新修改後的數組,你應該使用map(),也第一個參數是數組。把它處理

var array = [{a:1, b: 2, c: 3}, {a: 2, b: 4, c: 4}] 
 

 
var result = _.map(array, function (obj) { 
 
return _.omit(obj, ['a']); 
 
}); 
 

 
console.log(JSON.stringify(result, 0, 4))
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script>

0

個大概 - 不是最LO-劃線IEST方式(假設你真的想省略a):

_.each(lnkn, function (obj) { 
    var returnObj = {}; 
    for (prop in obj) { 
     if (obj.hasOwnProperty(prop) { 
      if (prop !== 'a') { 
       returnObj[prop] = obj[prop]; 
      } 
     } 
    } 
    return returnObj; 
}); 
+0

@ Nenad的答案肯定更好。 – irbanana

0

_.forEach應該返回原始數組。您正在尋找_.map

const array = [{a:1, b: 2, c: 3}, {a: 2, b: 4, c: 4}]; 
 
const result = _.map(array, obj => _.omit(obj, 'a')); 
 
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>

或者你可以修改的地方對象:

const array = [{a:1, b: 2, c: 3}, {a: 2, b: 4, c: 4}]; 
 
_.forEach(array, obj => { 
 
    delete obj.a; 
 
}); 
 
console.log(array);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>

+0

是啊!這就是我發現的。我使用'''_.map(array,(obj)=> _.omit(obj,'a'));''並且它工作正常。 –