2014-04-07 3 views
26

क्या ऑब्जेक्ट की सरणी से सभी कुंजी/मान जोड़े को हटाने का "स्मार्ट" अंडरस्कोर तरीका है?अंडरस्कोर: ऑब्जेक्ट की किसी सरणी से सभी कुंजी/मान जोड़े को हटाएं

उदा। मैं निम्नलिखित सरणी है:

var arr = [ 
     { q: "Lorem ipsum dolor sit.", c: false }, 
     { q: "Provident perferendis veniam similique!", c: false }, 
     { q: "Assumenda, commodi blanditiis deserunt?", c: true }, 
     { q: "Iusto, dolores ea iste.", c: false }, 
    ]; 

और मैं निम्नलिखित प्राप्त करना चाहते हैं:

for (var i = 0; i < arr.length; i++) { 
    delete arr[i].c; 
}; 
:

var newArr = [ 
     { q: "Lorem ipsum dolor sit." }, 
     { q: "Provident perferendis veniam similique!" }, 
     { q: "Assumenda, commodi blanditiis deserunt?" }, 
     { q: "Iusto, dolores ea iste." }, 
    ]; 

लिए मैंने नीचे जे एस के साथ काम, लेकिन मेरे समाधान के साथ बहुत खुश नहीं मिल सकता है

किसी भी सुझाव की बहुत सराहना की।

उत्तर

46

आप map और omit संयोजन के रूप में विशिष्ट गुणों को बाहर करने, इस तरह उपयोग कर सकते हैं:

var newArr = _.map(arr, function(o) { return _.omit(o, 'c'); }); 

या map और केवल करने के लिए pick इस तरह, विशिष्ट गुण शामिल हैं:

var newArr = _.map(arr, function(o) { return _.pick(o, 'q'); }); 
+0

मुझे यह करने के लिए मारो ! @ User789 यदि आप विपरीत प्रभाव चाहते हैं तो आप _.pick का भी उपयोग कर सकते हैं: 'var newArr = _.map (arr, function (o) {return _.pick (o, 'q');});' – Pete

+3

@ User789 , इसके अलावा, अगर आप सिर्फ एक सरणी चाहते थे, तो आप प्लक विधि का भी उपयोग कर सकते हैं: 'var newArr = _.pluck (arr, 'q');' – Pete

+0

@mister_rampage हाँ, यह भी एक अच्छा बिंदु है। –

संबंधित मुद्दे