मेरे पास एक शब्दकोश है जिसका प्रारूप है
dictionary = {0: {object}, 1:{object}, 2:{object}}
मैं इस शब्दकोश के माध्यम से कैसे कुछ ऐसा कर सकता हूँ
for((key,value) in dictionary){
//Do stuff where key would be 0 and value would be the object
}
मेरे पास एक शब्दकोश है जिसका प्रारूप है
dictionary = {0: {object}, 1:{object}, 2:{object}}
मैं इस शब्दकोश के माध्यम से कैसे कुछ ऐसा कर सकता हूँ
for((key,value) in dictionary){
//Do stuff where key would be 0 and value would be the object
}
जवाबों:
Map
एस के साथ संभव है ।नहीं, वस्तुओं के साथ संभव नहीं है।
आपको इस तरह से for..in
या तो पुनरावृति करनी चाहिए , या Object.keys
, इस तरह से
for (var key in dictionary) {
// check if the property/key is defined in the object itself, not in parent
if (dictionary.hasOwnProperty(key)) {
console.log(key, dictionary[key]);
}
}
नोट:if
हालत से ऊपर, के लिए आवश्यक है केवल यदि आप पुनरावृति करने के लिए गुण जो कर रहे हैं चाहते dictionary
वस्तु बहुत ही है। क्योंकि for..in
सभी विरासत में मिले गुणों के माध्यम से पुनरावृति होगी।
या
Object.keys(dictionary).forEach(function(key) {
console.log(key, dictionary[key]);
});
ECMAScript 2015 में, आप Map
ऑब्जेक्ट का उपयोग कर सकते हैं और उनके साथ पुनरावृति कर सकते हैं Map.prototype.entries
। उस पृष्ठ से उदाहरण उद्धृत करते हुए,
var myMap = new Map();
myMap.set("0", "foo");
myMap.set(1, "bar");
myMap.set({}, "baz");
var mapIter = myMap.entries();
console.log(mapIter.next().value); // ["0", "foo"]
console.log(mapIter.next().value); // [1, "bar"]
console.log(mapIter.next().value); // [Object, "baz"]
या for..of
इस तरह से पुनरावृति
'use strict';
var myMap = new Map();
myMap.set("0", "foo");
myMap.set(1, "bar");
myMap.set({}, "baz");
for (const entry of myMap.entries()) {
console.log(entry);
}
[ '0', 'foo' ]
[ 1, 'bar' ]
[ {}, 'baz' ]
या
for (const [key, value] of myMap.entries()) {
console.log(key, value);
}
0 foo
1 bar
{} baz
ECMAScript 2017 एक नया कार्य शुरू करेगा Object.entries
। आप इसका उपयोग उस वस्तु को पुन: व्यवस्थित करने के लिए कर सकते हैं जैसा आप चाहते थे।
'use strict';
const object = {'a': 1, 'b': 2, 'c' : 3};
for (const [key, value] of Object.entries(object)) {
console.log(key, value);
}
a 1
b 2
c 3
Object.keys(dictionary).forEach(function(key) {…
बहुत पठनीय, और संगत पसंद है।
Object.entries(object).forEach(([key, val]) => {...});
Object.entries()
विधि ES2017 में निर्दिष्ट किया गया है (और है सभी आधुनिक ब्राउज़रों में समर्थित ):
for (const [ key, value ] of Object.entries(dictionary)) {
// do something with `key` and `value`
}
स्पष्टीकरण:
Object.entries()
जैसे कोई ऑब्जेक्ट लेता है { a: 1, b: 2, c: 3 }
और इसे कुंजी-मूल्य जोड़े की एक सरणी में बदल देता है [ [ 'a', 1 ], [ 'b', 2 ], [ 'c', 3 ] ]
:।
इसके साथ for ... of
हम निर्मित सरणी की प्रविष्टियों पर लूप कर सकते हैं।
चूँकि हम इस बात की गारंटी देते हैं कि प्रत्येक पुनरावृत्त सरणी आइटम अपने आप में एक दो-प्रविष्टि सरणी है, इसलिए हम सीधे और अपने पहले और दूसरे आइटम को चर असाइन करने के लिए विनाशकारी का उपयोग कर सकते हैं ।key
value
आप ऐसा कुछ कर सकते हैं:
dictionary = {'ab': {object}, 'cd':{object}, 'ef':{object}}
var keys = Object.keys(dictionary);
for(var i = 0; i < keys.length;i++){
//keys[i] for key
//dictionary[keys[i]] for the value
}
2020 तक आपका स्वागत है * ES6 में Drools *
यहाँ कुछ बहुत पुराने उत्तर हैं - विनाशकारी का लाभ उठाएं। मेरी राय में यह एक शक के बिना एक वस्तु को पुनरावृत्त करने का सबसे अच्छा (बहुत पठनीय) तरीका है।
Object.entries(myObject).forEach(([k,v]) => {
console.log("The key: ",k)
console.log("The value: ",v)
})
forEach
साथ map
ऊपर, यह तो समस्त मानों करना संभव है। map
फिर उक्त मानों की सूची लौटाएगा, इस प्रकार संभवतः अन्य तरीकों से कोड को सरल बनाया जाएगा।
मुझे लगता है कि तेज और आसान तरीका है
Object.entries(event).forEach(k => {
console.log("properties ... ", k[0], k[1]); });
बस दस्तावेज़ की जाँच करें https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries
${key} ${value}
);});
आप स्क्रिप्ट के नीचे उपयोग कर सकते हैं।
var obj={1:"a",2:"b",c:"3"};
for (var x=Object.keys(obj),i=0;i<x.length,key=x[i],value=obj[key];i++){
console.log(key,value);
}
आउटपुट
1 ए
2 बी
सी 3
घोंसले को कम करने के लिए, स्वीकृत उत्तर में सुधार के रूप में, आप इसके बजाय ऐसा कर सकते हैं, बशर्ते कि चाबी विरासत में न मिली हो:
for (var key in dictionary) {
if (!dictionary.hasOwnProperty(key)) {
continue;
}
console.log(key, dictionary[key]);
}
संपादित करें: यहाँ के बारे में जानकारीObject.hasOwnProperty
for (let [key, value] of Object.entries(obj))
, बेबल की जरूरत है।