JavaScript 객체 키 목록 가져 오기
나는 JavaScript 객체를 가지고있다.
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);
var obj = {
key1: 'value1',
key2: 'value2',
key3: 'value3',
key4: 'value4'
}
var keys = Object.keys(obj);
console.log('obj contains ' + keys.length + ' keys: '+ keys);
현재 대부분의 주요 브라우저 에서 지원 됩니다.
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 [key];
obj = {'a':'c','b':'d'}
당신은 시도 할 수 있습니다:
[index for (index in obj)]
이것은 다음을 반환합니다 :
['a','b']
키 목록을 얻거나
[obj[index] for (index in obj)]
가치를 얻기 위해
Anurags 답변은 기본적으로 정확합니다. 그러나 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;
};
}());
}
coffeescript에서는 모든 브라우저와 노드에서 다음과 같이 수행 할 수 있습니다.
k for k of obj
따라서
(1 for _ of obj).length
사용하십시오 Object.keys()
...가는 길입니다.
전체 문서는 아래 링크 된 MDN 사이트에서 구할 수 있습니다.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
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' */
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;
};
ES6 forEach
을 사용하면 객체의 키를 반복 할 수 있습니다 . 사용할 수있는 모든 키를 얻으려면 Object.keys
Object의 모든 키를 반환합니다.
Object.keys(obj).forEach(function(keyValue, index, map) {
console.log(keyValue);
});
위 스 니펫의 숏 핸드는 하나의 매개 변수 만 사용합니다.
Object.keys(obj).forEach(function(keyValue) {
console.log(keyValue);
});
var obj = {
key1: 'value1',
key2: 'value2',
key3: 'value3',
key4: 'value4'
}
console.log(Object.keys(obj));
console.log(Object.keys(obj).length)
Underscore.js를 사용하기로 결정한 경우 더 잘 수행하십시오.
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);
JavaScript에서 객체는 속성과 유형을 가진 독립형 엔터티입니다.
배열 형태로 Object에서 값을 가져 오는 경우 : Object .values (obj) // obj는 사용한 개체 이름 결과 -> [ "value1", "value2", "value3", "value4"]
배열 형식으로 Object에서 키를 가져 오는 경우 : Object .keys (obj) // obj는 사용한 결과 이름 -> [ "key1", "key2", "key3", "key4"]
두 함수 모두 배열을 반환하므로 length 속성을 사용하여 키 또는 값의 길이를 얻을 수 있습니다. 예를 들어 - 개체 .values (OBJ) .length 또는 개체 .keys (OBJ) .length
슬라이스, 적용 및 결합 방법을 사용합니다.
var print = Array.prototype.slice.apply( obj );
alert('length='+print.length+' list'+print.join());
참고 URL : https://stackoverflow.com/questions/3068534/getting-javascript-object-key-list
'Programing' 카테고리의 다른 글
node.js에서 로컬 IP 주소 가져 오기 (0) | 2020.03.21 |
---|---|
전자 : jQuery가 정의되지 않았습니다 (0) | 2020.03.20 |
안전하고 효율적인 방법으로 파일 복사 (0) | 2020.03.20 |
기본 인증의 "영역"은 무엇입니까 (0) | 2020.03.20 |
“u”는 정확히 무엇을합니까? (0) | 2020.03.20 |