मेरे पास वस्तु है:

[Object]
    0: {Class: "MTH 1100-A", __rowNum__: 1}
    1: {Class: "CSC 3200-B", __rowNum__: 2}
    2: {Class: "ART 4334-E", __rowNum__: 3}
    3: {Class: "REC 3223-C", __rowNum__: 4}

मैं इन सभी को एक सरणी में लाना चाहता हूं, इससे पहले कि मैं ऐसा करूं, हालांकि मैं बस उन्हें प्रिंट करने की कोशिश कर रहा था और मैं ऐसा नहीं कर सकता। यहाँ मेरे पास कोड है:

const obj = {
  0: { Class: "MTH 1100-A",__rowNum__: 1},
  1: { Class: "CSC 3200-B", __rowNum__: 2 },
  2: { Class: "ART 4334-E", _rowNum__: 3 } ,
  3: { Class: "REC 3223-C", _rowNum__: 4 }
};

function getDescendantProp(obj, desc) {
  var arr = desc.split(".");
  while (arr.length && (obj = obj[arr.shift()]));
  return obj;
}

console.log(getDescendantProp(obj, '0.Class'));

for (var i = 0; i < obj.length; i++) {
  console.log(getDescendantProp(obj, "\'" + i + ".Class\'"));
}

आउटपुट के लिए आपको मिलता है:

"एमटीएच 1100-ए"
अपरिभाषित
अपरिभाषित
अपरिभाषित
अपरिभाषित

तो मैं उन मूल्यों को क्यों नहीं प्राप्त कर सकता .....?

0
SQLUser 3 अप्रैल 2018, 22:14

1 उत्तर

ऑब्जेक्ट में length प्रॉपर्टी नहीं है। तो आप अपरिभाषित मान के बावजूद लूपिंग कर रहे हैं।

आप अपनी वस्तु को Object.values(obj) के साथ एक सरणी में बदल सकते हैं:

const obj = {
  0: { Class: "MTH 1100-A",__rowNum__: 1},
  1: { Class: "CSC 3200-B", __rowNum__: 2 },
  2: { Class: "ART 4334-E", _rowNum__: 3 } ,
  3: { Class: "REC 3223-C", _rowNum__: 4 }
};

function getDescendantProp(obj, key) {
  return Object.values(obj).map(i => i[key]);
}

console.log(getDescendantProp(obj, 'Class'));

const arr = getDescendantProp(obj, 'Class');
arr.forEach(i => {
  console.log(i);
});
0
FisNaN 3 अप्रैल 2018, 21:09