2015-06-01 15 views
8

समस्या यह है कि मैं का सामना करना पड़ रहा हूँ onject संपत्ति false यहाँ है कि में मान -removing में झूठी मान निकालें वस्तुवस्तु

var myObj={105:true,183:false,108:true,106:false} 

मैं एक में मूल्यों को प्राप्त करने में सक्षम हूँ है मूल्यों संपत्ति झूठी है हटाने और ["105",108"] के रूप में उत्पन्न .can तुम मुझे मदद करने के लिए

Object.keys(myObj)["105","183","108","106"] देता है लेकिन मैं एक तरह से की जरूरत है: निम्न तर्क का उपयोग करके सरणी?

+1

दोहराएं गुण और उन्हें – Satpal

उत्तर

3

मैं सिर्फ JSBin पर अपनी समस्या का समाधान बना लिया है: Working Demo

कृपया नीचे दिए गए कोड को खोजने:

var myObj={105:true,183:false,108:true,106:false}; 
var myArray = []; 

function RemoveFalseAndTransformToArray() { 
    for (var key in myObj) { 
    if(myObj[key] === false) { 
     delete myObj[key]; 
    } else { 
     myArray.push(key); 
    } 
    } 
} 
RemoveFalseAndTransformToArray(); 
console.log("myObj: ", myObj); 
console.log("myArray: ", myArray); 
// result = ["105", "108"] 

कृपया, मुझे पता है अगर आप किसी भी सवाल है करते हैं।

1

उन गुणों को निकालने के लिए आप इस एल्गोरिथ्म का उपयोग कर सकते हैं:

for (k in myObj) 
{ 
    if (myObj.hasOwnProperty(k) && myObj[k] === false) 
    { 
     delete myObj[k]; 
    } 
} 

तुम सिर्फ गैर false मूल्यों की कुंजी में रुचि रखते हैं, तो आप उपयोग कर सकते हैं:

var keys = Object.keys(myObj).filter(function (k) { 
    return myObj[k] !== false; 
}); 

hasOwnProperty() जांच है आवश्यक है क्योंकि ऑब्जेक्ट में गैर-उपयोगकर्ता गुण हो सकते हैं (जैसे prototype) जिसे आप वास्तव में गड़बड़ नहीं करना चाहते हैं।

1

आप for...in पाश

var myObj={105:true,183:false,108:true,106:false} 
for(var key in myObj){ 
    if(myObj.hasOwnProperty(key) && myObj[key] == false){ 
    delete myObj[key]; 
    } 
} 

console.log(JSON.stringify(myObj)) //{"105":true,"108":true} 
console.log(Object.keys(myObj)) //["105", "108"] 
6

आप एक सरणी में वस्तु की कुंजी का उपयोग कर वस्तु पर पुनरावृति की जरूरत है। उस पर फ़िल्टर चलाएं।

var myObj={105:true,183:false,108:true,106:false}; 

var result = Object.keys(myObj).filter(function(x) { 
    return myObj[x] !== false; 
}); 
// result = ["105", "108"] 
+0

नोट निकालने के लिए: इस उत्तर IE9 + – Jason

1

आप this NPM package का भी उपयोग कर सकते हैं या इस ओपन सोर्स object-clean आयात कर सकते हैं जो सभी ऑब्जेक्ट गुणों को साफ़ करता है जिसमें एक झूठा मूल्य होता है और उनके बिना एक नई वस्तु देता है।

उदाहरण:

clean({ foo: null, bar: 'foo' }) // => { bar: 'foo' } 
+0

पहले पुस्तकालय '' 'को हटा undefined''' नहीं' '' false''' की आवश्यकता है। तो काम नहीं करेगा। –

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