मेरे पास एक जावास्क्रिप्ट ऑब्जेक्ट है जैसे
var obj = {
key1: 'value1',
key2: 'value2',
key3: 'value3',
key4: 'value4'
}
मैं इस ऑब्जेक्ट में कुंजियों की लंबाई और सूची कैसे प्राप्त कर सकता हूं?
मेरे पास एक जावास्क्रिप्ट ऑब्जेक्ट है जैसे
var obj = {
key1: 'value1',
key2: 'value2',
key3: 'value3',
key4: 'value4'
}
मैं इस ऑब्जेक्ट में कुंजियों की लंबाई और सूची कैसे प्राप्त कर सकता हूं?
जवाबों:
var obj = {
key1: 'value1',
key2: 'value2',
key3: 'value3',
key4: 'value4'
};
var keys = [];
for (var k in obj) keys.push(k);
alert("total " + keys.length + " keys: " + keys);
keys।
Object.prototype, जो आपको वैसे भी नहीं करना चाहिए। कस्टम बिल्डरों के लिए, हालांकि, आप सही हैं।
[]इसे (या array()फिर वापस) असाइन करना इसे एक सरणी बनाता है, जिसे आप तब एक सरणी के रूप में सुरक्षित रूप से उपयोग कर सकते हैं।
var obj = {
key1: 'value1',
key2: 'value2',
key3: 'value3',
key4: 'value4'
}
var keys = Object.keys(obj);
console.log('obj contains ' + keys.length + ' keys: '+ keys);
यह अब सबसे प्रमुख ब्राउज़रों पर समर्थित है ।
for(key in ob)! Object.keysअभ्यस्त प्रोटोटाइप से कुंजी सूची, लेकिन .. in objकरता है।
Underscore.js परिवर्तन को बहुत साफ बनाता है:
var keys = _.map(x, function(v, k) { return k; });
संपादित करें: मैंने याद किया कि आप यह भी कर सकते हैं:
var keys = _.keys(x);
यदि आप केवल उन कुंजियों को चाहते हैं जो उस विशेष वस्तु के लिए विशिष्ट हैं और कोई व्युत्पन्न prototypeगुण नहीं:
function getKeys(obj) {
var r = []
for (var k in obj) {
if (!obj.hasOwnProperty(k))
continue
r.push(k)
}
return r
}
उदाहरण के लिए:
var keys = getKeys({'eggs': null, 'spam': true})
var length = keys.length // access the `length` property as usual for arrays
var keys = new Array();
for(var key in obj)
{
keys[keys.length] = key;
}
var keyLength = keys.length;
ऑब्जेक्ट से किसी भी मूल्य तक पहुंचने के लिए, आप obj [कुंजी] का उपयोग कर सकते हैं;
keys.length, जो प्रत्येक पुनरावृत्ति के लिए अलग होता है क्योंकि प्रत्येक पुनरावृत्ति एक मान सम्मिलित करता है।
obj = {'a':'c','b':'d'}
तुम कोशिश कर सकते हो:
[index for (index in obj)]
यह वापस आ जाएगा:
['a','b']
कुंजी की सूची पाने के लिए या
[obj[index] for (index in obj)]
मान प्राप्त करने के लिए
अनुराग का उत्तर मूल रूप से सही है। लेकिन Object.keys(obj)पुराने ब्राउज़रों में समर्थन के लिए आप नीचे दिए गए कोड का उपयोग कर सकते हैं जो कि https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys से कॉपी किया गया है
। Object.keys(obj)यदि यह ब्राउज़र से उपलब्ध नहीं है तो यह विधि जोड़ता है।
if (!Object.keys) {
Object.keys = (function() {
'use strict';
var hasOwnProperty = Object.prototype.hasOwnProperty,
hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString'),
dontEnums = [
'toString',
'toLocaleString',
'valueOf',
'hasOwnProperty',
'isPrototypeOf',
'propertyIsEnumerable',
'constructor'
],
dontEnumsLength = dontEnums.length;
return function(obj) {
if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {
throw new TypeError('Object.keys called on non-object');
}
var result = [], prop, i;
for (prop in obj) {
if (hasOwnProperty.call(obj, prop)) {
result.push(prop);
}
}
if (hasDontEnumBug) {
for (i = 0; i < dontEnumsLength; i++) {
if (hasOwnProperty.call(obj, dontEnums[i])) {
result.push(dontEnums[i]);
}
}
}
return result;
};
}());
}
ECMAScript 5 का समर्थन करने वाले ब्राउज़रों के लिए पुनरावर्ती समाधान:
var getObjectKeys = function(obj) {
var keys = Object.keys(obj);
var length = keys.length;
if (length !== 0) {
for (var i = 0; i < length; i++) {
if (typeof obj[keys[i]] === 'object') {
keys[keys[i]] = getObjectKeys(obj[keys[i]]);
}
}
}
return keys;
};
उपयोग Object.keys() ... यह जाने का रास्ता है।
पूर्ण प्रलेखन नीचे दिए गए एमडीएन साइट पर उपलब्ध है:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
यदि आप अंडरस्कोर का उपयोग करने का निर्णय लेते हैं। तो क्या आप बेहतर करते हैं
var obj = {
key1: 'value1',
key2: 'value2',
key3: 'value3',
key4: 'value4'
}
var keys = [];
_.each( obj, function( val, key ) {
keys.push(key);
});
console.log(keys.lenth, keys);
जावास्क्रिप्ट में, एक ऑब्जेक्ट एक स्टैंडअलोन इकाई है, जिसमें गुण और प्रकार हैं।
सरणी के रूप में वस्तु से मूल्यों को प्राप्त करने में कठिनाई के लिए: वस्तु .values (obj) // obj ऑब्जेक्ट नाम है कि आप प्रयोग किया जाता है परिणाम -> [ "मान 1", "मान 2", "value3", "VALUE4"]
सरणी के रूप में वस्तु से चाबी प्राप्त करने में कठिनाई के लिए: वस्तु .keys (obj) // obj ऑब्जेक्ट नाम है कि आप प्रयोग किया जाता है परिणाम -> [ "कुंजी 1", "कुंजी 2", "key3", "key4"]
जैसा कि दोनों फ़ंक्शन सरणी लौटा रहे हैं आप लंबाई की संपत्ति का उपयोग करके कुंजी या मूल्य की लंबाई प्राप्त कर सकते हैं। उदाहरण के लिए - ऑब्जेक्ट .values (obj) .length या ऑब्जेक्ट .keys (obj) .length
JSON ऑब्जेक्ट की कुंजियों को सूचीबद्ध करने के लिए अल्पविराम-आधारित स्ट्रिंग के लिए, निम्नलिखित प्रयास करें:
function listKeys(jObj){
var keyString = '';
for(var k in jObj){
keyString+=(','+k);
}
return keyString.slice(1);
}
/* listKeys({'a' : 'foo', 'b' : 'foo', 'c' : 'foo'}) -> 'a,b,c' */
ES6 का उपयोग करके, आप forEachकिसी ऑब्जेक्ट की कुंजी पर पुनरावृति करने के लिए उपयोग कर सकते हैं । उन सभी कुंजियों को प्राप्त करने के लिए, Object.keysजिनका उपयोग आप कर सकते हैं, जो एक वस्तु में सभी कुंजियों को लौटाता है
Object.keys(obj).forEach(function(keyValue, index, map) {
console.log(keyValue);
});
उपरोक्त स्निपेट का छोटा हाथ होगा, जो केवल एक पैरामीटर लेता है
Object.keys(obj).forEach(function(keyValue) {
console.log(keyValue);
});
if(props.userType){
var data = []
Object.keys(props.userType).map(i=>{
data.push(props.userType[i])
})
setService(data)
}
स्लाइस का उपयोग करना, आवेदन करना और विधि में शामिल होना।
var print = Array.prototype.slice.apply( obj );
alert('length='+print.length+' list'+print.join());