JavaScript 객체에서 키를 값으로 얻는 방법은 무엇입니까?


387

매우 간단한 JavaScript 객체가 있는데 연관 배열로 사용합니다. 값의 키를 얻을 수있는 간단한 기능이 있습니까? 아니면 객체를 반복하고 수동으로 찾아야합니까?


이를위한 표준 기능은 없습니다. 매핑이 실제로 양방향 인 경우 "플립"맵을 구성하고 색인을 생성하는 것은 쉽지 않습니다. 그렇지 않으면 간단한 속성 반복자 (아마도 hasOwnProperty 가드 포함)와 함수 안에 숨겨져있는 조기 반환이 잘 작동합니다.

객체가 둘 이상의 키로 참조 된 경우 어떻게 작동합니까? var o = []; var map = {first: o, second: o}. 무엇이 find_key(o)돌아 올까요?
Gareth

3
중요하지 않습니다.) 독특한 키-값 쌍이있는 배열에만 사용하려고했습니다.
arik


반복 stackoverflow.com/a/36705765/696535 없이 버전을 만들었습니다 . jsfiddle에서 제안 된 모든 솔루션을 테스트하는 것이 흥미로울 것입니다.
Pawel

답변:


91

Underscore.js 라이브러리를 사용하여 :

var hash = {
  foo: 1,
  bar: 2
};

(_.invert(hash))[1]; // => 'foo'

381
@GeorgeJempty 모든 사람이 간단한 키 조회를 위해 5kb 라이브러리를로드하려는 것은 아닙니다.)
tckmn

4
참고로 값과 일치하는 모든 키를 얻을 수있는 솔루션을 찾는 사람에게는 도움이되지 않습니다.
Brett

2
밑줄 키도 작동합니다. underscorejs.org/#keys _.keys ({1 : 1, 2 : 2, 3 : 3}); => [ "one", "two", "three"]
Thaddeus Albers

1
_.invert는 기본 문자열 직렬화가 충돌 할 때 값에 개체가 포함 된 경우 작동하지 않습니다. 이 혐오를 사용할 수 있습니다 :_.chain(hash).pairs().findWhere({1: 1}).value()[0]
DanHorner

3
이것은 받아 들여져서는 안되며, 현재 코드 구조를 변경하는 라이브러리를 통한 솔루션을 제안합니다
Matteo

591
function getKeyByValue(object, value) {
  return Object.keys(object).find(key => object[key] === value);
}

ES6, 프로토 타입 돌연변이 또는 외부 라이브러리 없음.

예,

function getKeyByValue(object, value) {
  return Object.keys(object).find(key => object[key] === value);
}


const map = {"first" : "1", "second" : "2"};
console.log(getKeyByValue(map,"2"));


8
IE11을 지원하지 않으면 정말 깨끗합니다 :-) 그렇다면 polyfill이 필요합니다
Chexpir

4
구현에 따라 키 세트를 구체화하기 때문에 O (n) 공간 이 필요할 수 keys()있습니다.
David Ehrmann 1

2
깨끗하지만 느리다.
Dirigible

4
여러 키가 같은 값을 갖는 경우 찾기 대신 필터를 사용하십시오function getKeyByValue(object, value) { return Object.keys(object).filter(key => object[key] === value); }
saketh

롤 이것은 느리지 않습니다. O (n)으로 거의 최고의 런타임입니다.
벤 Wainwright

179

사용 가능한 표준 방법이 없습니다. 반복해야하며 간단한 도우미를 만들 수 있습니다.

Object.prototype.getKeyByValue = function( value ) {
    for( var prop in this ) {
        if( this.hasOwnProperty( prop ) ) {
             if( this[ prop ] === value )
                 return prop;
        }
    }
}

var test = {
   key1: 42,
   key2: 'foo'
};

test.getKeyByValue( 42 );  // returns 'key1'

주의 사항 : 위의 방법으로 작동하더라도 일반적으로 호스트 또는 기본 객체를 확장하는 것은 좋지 않습니다 .prototype. 문제에 잘 맞기 때문에 여기에서했습니다. 어쨌든, 아마도이 함수를 외부에서 사용해야 .prototype하고 대신 객체를 전달해야합니다.


2
실제로 for-in 루프가 "for (var key in obj)"라는 속성 체인을 내려 가서 "getKeyByValue"를 "key"로 지정한다는 점을 알고 있다면 괜찮습니다.

오, 나는 값이 존재하지 않으면 어떻게 이것이 정의되지 않은 것을 반환하는지 좋아합니다. 잘 했어. 또한 관심있는 점은 O (n)을 수행하므로 객체에 많은 속성 (대도시의 사람들 목록 및 주소 등)이 있으면 더 효율적인 검색을 원할 것입니다. 정렬 값과 이진 검색? 뭐라고?
corbin

고마워, 내가 나쁜 생각을했을 때 나는 왜 이것을 통해 검색 하고이 답변 향상과 광범위한 독서를 위해 여기에 추가했는지 궁금해한다. stackoverflow.com/questions/3085240/…
simongcc 2016 년

1
@jAndy ===가 아니라 ==입니다. 코드가 ===에서 작동하지 않습니다. 정의되지 않은 값을 반환합니다.
Dexter

난 그냥 추가 더 나은 수정 유형 오류에 될 문자열로 변환 생각 .toString()처럼 obj[ key ].toString()원하는 경우 값으로 ...
CrandellWS

129

언급했듯이 반복이 필요합니다. 예를 들어 최신 브라우저에서는 다음을 수행 할 수 있습니다.

var key = Object.keys(obj).filter(function(key) {return obj[key] === value})[0];

어디 value찾고자하는 가치가있는 . 나는 아마도 루프를 사용할 것이라고 말했다.

그렇지 않으면 적절한 "hashmap"객체를 사용할 수 있습니다. JS에는 여러 가지 구현이 있거나 직접 구현할 수 있습니다.

2018 업데이트

6 년이 지났지 만 여전히 투표권을 얻었으므로 현대 브라우저 / 환경을위한보다 현대적인 솔루션처럼 의견 자체가 아니라 답변 자체에서 언급해야합니다.

const key = Object.keys(obj).find(key => obj[key] === value);

물론 그것은 또한 함수가 될 수 있습니다 :

const getKeyByValue = (obj, value) => 
        Object.keys(obj).find(key => obj[key] === value);

18
ES6 :Object.keys(obj).or(o=>o[key] === value)
Benjamin Gruenbaum

불행히도 화살표 기능은 아직 "현대적인"브라우저가 아니기 때문에 현재 약간 쓸모가 없습니다. Firefox에서는 jetpack에서 사용하고 있습니다. Firefox Nightly에서는 Firefox 22 or에서 사용됩니다. 방법, 그리고 그 목적이 여기에 명확하지 않습니다 : 나는 약간의 추가 세부 사항에 감사하겠습니다! :)
ZER0 2016 년

1
화살표, 그것은오고 나는 그것을 :)으로 기다리고 or있는지! 그것은 단지 최근에 평가되고 받아 들여졌습니다 (아직 아무도 그것을 구현하지 않는다고 생각합니다). 그것이하는 것은 술어와 일치하는 배열의 첫 번째 요소를 찾아서 반환하는 것입니다. 그래서 [1,2,3,4].or(x=>x>2)반환 3하고 [1,2,3,4,5].or(x=>x<3)반환합니다 1. C #의 FirstOrDefault와 같은 것
Benjamin Gruenbaum

예, 화살표가 다가오고 있지만 누군가가 특정 엔진을 사용하고 있지 않는 한 널리 사용되어야합니다. ES6에 대한 새로운 제안을 알지 못했지만 꽤 닫혀 있다고 생각했습니다. or방법 에 대한 링크가 있습니까? 언급 한 것에서 술어 "또는"배열 자체와 일치하는 항목을 반환하는 것 같습니다.
ZER0

1
나중에 언급 된 @ sg552의 or이름이 바뀌 었습니다. 나는 이제 당신이 find 를 사용해야한다고 믿는다 .
ZER0

42

lodash 방식 https://lodash.com/docs#findKey

var users = {
  'barney':  { 'age': 36, 'active': true },
  'fred':    { 'age': 40, 'active': false },
  'pebbles': { 'age': 1,  'active': true }
};

_.findKey(users, { 'age': 1, 'active': true });
// → 'pebbles'


Lodash는이 문제에 가장 적합한 솔루션입니다. 밑줄보다 더 낫습니다.
arik

4
참고로, "밑줄": _.findKey(users, { 'age': 1, 'active': true });... 동일합니다
craigmichaelmartin

배열이 필요한 값인 경우 :-let obj = {a : [1, 2], b : [3, 4], c : [5, 6]} _.findKey (obj, function (val) { return _.isEqual (val, [5, 6]);});
ashishyadaveee11

8
문자열이나 정수와 같이 값이 단순하면 예상과 달리 작동하지 않습니다. 예 _.find_key({a: "A", b:"B"}, "B"})반환 undefined않도록 언급 여기 당신이해야 _.find_key({a: "A", b:"B"}, _.partial(_.isEqual,"B")})
ryan2johnson9

1
@ ryan2johnson9 Lodash의 문제입니다. 일부 기능을 이해하는 데 어려움을 겪고 있습니다 (분명히 유일한 사람입니다). 그러나 어쨌든 감사합니다. 더 짧은 다른 해결책을 찾았습니다. 더 큰 물체에 과잉 힙이 발생하므로주의하십시오. _.invert(haystack)[needle]
Empi

33
function extractKeyValue(obj, value) {
    return Object.keys(obj)[Object.values(obj).indexOf(value)];
}

컴파일 후 알 수없는 키 이름을 추출하기 위해 클로저 컴파일러를 위해 제작되었습니다.

더 섹시한 버전이지만 미래를 사용 Object.entries 기능 사용

function objectKeyByValue (obj, val) {
  return Object.entries(obj).find(i => i[1] === val);
}

7
나는 이것이 일반 JavaScript를 사용하기 때문에 2017+에 가장 적합한 것이라고 생각합니다.
brainbag

같은 값을 가진 두 개 이상의 숫자가 있다면 작동하지 않는 것 같습니다
JuicY_Burrito

@SamuelChen 맞습니다. 그러나 작동하면 결과적으로 배열이 필요하다는 것을 의미합니다. 어디 Object.entries(obj).find(i => i[1] === val);를 사용 filter하는 대신Object.entries(obj).filter(i => i[1] === val);
파블

24

ES6 + 원 라이너

let key = Object.keys(obj).find(k=>obj[k]===value);

값이있는 모든 키를 반환하십시오.

let keys = Object.keys(obj).filter(k=>obj[k]===value);

1
종속성이 없으므로 허용되는 답변이어야합니다.
Andrew Schultz

22

이 기능을 사용합니다 :

Object.prototype.getKey = function(value){
  for(var key in this){
    if(this[key] == value){
      return key;
    }
  }
  return null;
};

용법:

// ISO 639: 2-letter codes
var languageCodes = {
  DA: 'Danish',
  DE: 'German',
  DZ: 'Bhutani',
  EL: 'Greek',
  EN: 'English',
  EO: 'Esperanto',
  ES: 'Spanish'
};

var key = languageCodes.getKey('Greek');
console.log(key); // EL

10
깔끔한 솔루션 +1 그러나 나는 질문이 있습니다 : 당신은 항상 확인해야합니까 obj.hasOwnProperty(key)?이 경우에는 불필요합니까?
V-Light

5
Object 프로토 타입을 변경하는 것은 나쁜 습관입니다 : stackoverflow.com/questions/23807805/…
Jon Koops

18

비 적절한 솔루션

주요 기능:

var keyByValue = function(value) {

    var kArray = Object.keys(greetings);        // Creating array of keys
    var vArray = Object.values(greetings);      // Creating array of values
    var vIndex = vArray.indexOf(value);         // Finding value index 

    return kArray[vIndex];                      // Returning key by value index
}

키와 값이있는 객체 :

var greetings = {
    english   : "hello",
    ukranian  : "привіт"
};

테스트:

keyByValue("привіт");
// => "ukranian"

더 간단한 : Object.keys(greetings )[Object.values(greetings ).indexOf('привіт')]
shutsman

16

프로토 타입을 깨끗하게 유지하십시오 .

function val2key(val,array){
    for (var key in array) {
        if(array[key] == val){
            return key;
        }
    }
 return false;
}

예:

var map = {"first" : 1, "second" : 2};
var key = val2key(2,map); /*returns "second"*/

15

당신이 작업하는 경우 밑줄 또는 Lodash 라이브러리, 당신은 사용할 수 있습니다 _.findKey의 기능을 :

var users = {
  'barney':  { 'age': 36, 'active': true },
  'fred':    { 'age': 40, 'active': false },
  'pebbles': { 'age': 1,  'active': true }
};

_.findKey(users, function(o) { return o.age < 40; });
// => 'barney' (iteration order is not guaranteed)

// The `_.matches` iteratee shorthand.
_.findKey(users, { 'age': 1, 'active': true });
// => 'pebbles'

// The `_.matchesProperty` iteratee shorthand.
_.findKey(users, ['active', false]);
// => 'fred'

// The `_.property` iteratee shorthand.
_.findKey(users, 'active');
// => 'barney'

13

강력하고 유연하며 효율적인 JavaScript 양방향 맵 인터페이스를 구현하는 Bimap 라이브러리 ( https://github.com/alethes/bimap )를 만들었습니다 . 종속성이 없으며 서버 측 (Node.js에서로 설치할 수 있음 npm install bimap)과 브라우저 ( lib / bimap.js 에 연결하여 )에서 사용할 수 있습니다.

기본 작업은 정말 간단합니다.

var bimap = new BiMap;
bimap.push("k", "v");
bimap.key("k") // => "v"
bimap.val("v") // => "k"

bimap.push("UK", ["London", "Manchester"]);
bimap.key("UK"); // => ["London", "Manchester"]
bimap.val("London"); // => "UK"
bimap.val("Manchester"); // => "UK"

키-값 매핑의 검색은 양방향에서 동일하게 빠릅니다. 후드 아래에는 고가의 객체 / 배열 탐색이 없으므로 데이터의 크기에 관계없이 평균 액세스 시간이 일정하게 유지됩니다.


반복이 필요하지 않은 유일한 솔루션 중 하나입니다 (솔루션 자체, 표준 라이브러리 또는 다른 라이브러리).
Scott Rudiger

6

다음을 보지 못했습니다 :

const obj = {
  id: 1,
  name: 'Den'
};

function getKeyByValue(obj, value) {
  return Object.entries(obj).find(([, name]) => value === name);
}

const [ key ] = getKeyByValue(obj, 'Den');
console.log(key)
  


5

값은 고유하기 때문에 값을 추가 키 세트로 추가 할 수 있어야합니다. 다음 바로 가기로 수행 할 수 있습니다.

var foo = {};
foo[foo.apple = "an apple"] = "apple";
foo[foo.pear = "a pear"] = "pear";

이를 통해 키 또는 값을 통해 검색 할 수 있습니다.

var key = "apple";
var value = "an apple";

console.log(foo[value]); // "apple"
console.log(foo[key]); // "an apple"

이것은 키와 값 사이에 공통 요소가 없다고 가정합니다.


모든 솔루션을 탐색 하면서이 솔루션을 사용했습니다. 매우 직관적입니다.
nehem

1
반복이 필요하지 않은 유일한 솔루션 중 하나입니다 (솔루션 자체, 표준 라이브러리 또는 다른 라이브러리).
Scott Rudiger

OP는 키 / 값 쌍이 모두 독특하다고 말했기 때문에이 저 기술 답변은 환상적입니다! ;)
customcommander

4

주어진 input={"a":"x", "b":"y", "c":"x"}...

  • 첫 번째 값을 사용하려면 (예 :) output={"x":"a","y":"b"}:

input = {
  "a": "x",
  "b": "y",
  "c": "x"
}
output = Object.keys(input).reduceRight(function(accum, key, i) {
  accum[input[key]] = key;
  return accum;
}, {})
console.log(output)

  • 마지막 값을 사용하려면 (예 :) output={"x":"c","y":"b"}:

input = {
  "a": "x",
  "b": "y",
  "c": "x"
}
output = Object.keys(input).reduce(function(accum, key, i) {
  accum[input[key]] = key;
  return accum;
}, {})
console.log(output)

  • 각 값에 대한 키 배열을 얻으려면 (예 :) output={"x":["c","a"],"y":["b"]}:

input = {
  "a": "x",
  "b": "y",
  "c": "x"
}
output = Object.keys(input).reduceRight(function(accum, key, i) {
  accum[input[key]] = (accum[input[key]] || []).concat(key);
  return accum;
}, {})
console.log(output)


1
이것은 확실히 가장 좋은 대답이지만 주어진 객체의 키 만 반환하기 위해 변환하는 방법에 대해 머리를 긁적했습니다. 즉, 함수의 경우 배열의 indexOf와 동일합니다.
Souhaieb Besbes

메모리가 제약 조건이 아니라면 객체를 여러 번 살펴보기 위해 많은 처리 능력을 기꺼이 사용하지 않는 한 위에 표시된대로 "출력"을 변수에 저장하고 결과를 검색하십시오 output['x']. 그게 당신이 요구 한 것입니까?
Fabio Beltramini

2

http://jsfiddle.net/rTazZ/2/

var a = new Array(); 
    a.push({"1": "apple", "2": "banana"}); 
    a.push({"3": "coconut", "4": "mango"});

    GetIndexByValue(a, "coconut");

    function GetIndexByValue(arrayName, value) {  
    var keyName = "";
    var index = -1;
    for (var i = 0; i < arrayName.length; i++) { 
       var obj = arrayName[i]; 
            for (var key in obj) {          
                if (obj[key] == value) { 
                    keyName = key; 
                    index = i;
                } 
            } 
        }
        //console.log(index); 
        return index;
    } 

@ Fr0zenFyr : 링크를하면 더 나은 질문에 대답 할 수 - stackoverflow.com/questions/8423493/...
Atur

2

또는 더 쉬운 방법-원하는 순서대로 키와 값을 사용하여 새 객체를 만든 다음 해당 객체를 찾아보십시오. 위의 프로토 타입 코드를 사용하여 충돌이있었습니다. 키 주위에 문자열 기능을 사용할 필요는 없습니다. 선택 사항입니다.

 newLookUpObj = {};
 $.each(oldLookUpObj,function(key,value){
        newLookUpObj[value] = String(key);
    });


2

마치이 질문이 펄프에 맞지 않은 것처럼 ...

호기심을 불러 일으키는 방법은 다음과 같습니다.

객체에 문자열 값만 있다고 확신한다면 실제로이 구현을 활용하기 위해 자신을 소진시킬 수 있습니다.

var o = { a: '_A', b: '_B', c: '_C' }
  , json = JSON.stringify(o)
  , split = json.split('')
  , nosj = split.reverse()
  , o2 = nosj.join('');

var reversed = o2.replace(/[{}]+/g, function ($1) { return ({ '{':'}', '}':'{' })[$1]; })
  , object = JSON.parse(reversed)
  , value = '_B'
  , eulav = value.split('').reverse().join('');

console.log('>>', object[eulav]);

어쩌면 여기에 구축하는 데 유용한 것이있을 수 있습니다 ...

희망이 당신을 즐겁게합니다.


2

여기에 중첩 된 객체가 아닌 플랫 키 => 값 객체에 작동하는 Lodash 솔루션이 있습니다. 허용 된 답변의 사용 제안_.findKey 은 중첩 된 객체가있는 객체에 대해서는 작동하지만이 일반적인 상황에서는 작동하지 않습니다.

이 방법은 객체를 반전시키고 키를 값으로 교체 한 다음 새 (반전 된) 객체에서 값을 찾아 키를 찾습니다. 키를 찾지 못하면 false반환됩니다. 이상을 선호 undefined하지만의 _.get메소드 의 세 번째 매개 변수에서 쉽게 바꿀 수 있습니다 getKey().

// Get an object's key by value
var getKey = function( obj, value ) {
	var inverse = _.invert( obj );
	return _.get( inverse, value, false );
};

// US states used as an example
var states = {
	"AL": "Alabama",
	"AK": "Alaska",
	"AS": "American Samoa",
	"AZ": "Arizona",
	"AR": "Arkansas",
	"CA": "California",
	"CO": "Colorado",
	"CT": "Connecticut",
	"DE": "Delaware",
	"DC": "District Of Columbia",
	"FM": "Federated States Of Micronesia",
	"FL": "Florida",
	"GA": "Georgia",
	"GU": "Guam",
	"HI": "Hawaii",
	"ID": "Idaho",
	"IL": "Illinois",
	"IN": "Indiana",
	"IA": "Iowa",
	"KS": "Kansas",
	"KY": "Kentucky",
	"LA": "Louisiana",
	"ME": "Maine",
	"MH": "Marshall Islands",
	"MD": "Maryland",
	"MA": "Massachusetts",
	"MI": "Michigan",
	"MN": "Minnesota",
	"MS": "Mississippi",
	"MO": "Missouri",
	"MT": "Montana",
	"NE": "Nebraska",
	"NV": "Nevada",
	"NH": "New Hampshire",
	"NJ": "New Jersey",
	"NM": "New Mexico",
	"NY": "New York",
	"NC": "North Carolina",
	"ND": "North Dakota",
	"MP": "Northern Mariana Islands",
	"OH": "Ohio",
	"OK": "Oklahoma",
	"OR": "Oregon",
	"PW": "Palau",
	"PA": "Pennsylvania",
	"PR": "Puerto Rico",
	"RI": "Rhode Island",
	"SC": "South Carolina",
	"SD": "South Dakota",
	"TN": "Tennessee",
	"TX": "Texas",
	"UT": "Utah",
	"VT": "Vermont",
	"VI": "Virgin Islands",
	"VA": "Virginia",
	"WA": "Washington",
	"WV": "West Virginia",
	"WI": "Wisconsin",
	"WY": "Wyoming"
};

console.log( 'The key for "Massachusetts" is "' + getKey( states, 'Massachusetts' ) + '"' );
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>


2

여기 내 솔루션이 먼저 있습니다.

예를 들어, 세 개의 값 쌍을 포함하는 객체가 있다고 가정합니다.

function findKey(object, value) {

    for (let key in object)
        if (object[key] === value) return key;

    return "key is not found";
}

const object = { id_1: "apple", id_2: "pear", id_3: "peach" };

console.log(findKey(object, "pear"));
//expected output: id_2

객체와 찾고있는 키의 값인 두 개의 매개 변수를 사용하는 findKey (array, value)를 작성하면됩니다. 따라서이 방법은 재사용 할 수 있으며이 함수에 대해 두 개의 매개 변수 만 전달하여 매번 수동으로 오브젝트를 반복 할 필요가 없습니다.


2

ES6 방법 :

Object.fromEntries(Object.entries(a).map(b => b.reverse()))['value_you_look_for']

0

나는 일반적으로 밑줄보다는 lodash를 추천합니다.

가지고 있다면 사용하십시오.

그렇지 않은 경우 lodash.invert npm 패키지 사용을 고려해야합니다.

gulp를 사용하여 테스트하는 방법은 다음과 같습니다.

1) 다음 내용으로 gulpfile.js라는 파일을 만듭니다.

// Filename: gulpfile.js
var gulp = require('gulp');
var invert = require('lodash.invert');   
gulp.task('test-invert', function () {
  var hash = {
    foo: 1,
    bar: 2
  };
  var val = 1;
  var key = (invert(hash))[val];  // << Here's where we call invert!
  console.log('key for val(' + val + '):', key);
});

2) lodash.invert 패키지 및 꿀꺽 꿀꺽 설치

$ npm i --save lodash.invert && npm install gulp

3) 작동하는지 테스트하십시오.

$ gulp test-invert
[17:17:23] Using gulpfile ~/dev/npm/lodash-invert/gulpfile.js
[17:17:23] Starting 'test-invert'...
key for val(1): foo
[17:17:23] Finished 'test-invert' after 511 μs

참고 문헌

https://www.npmjs.com/package/lodash.invert

https://lodash.com/

lodash와 밑줄의 차이점

https://github.com/gulpjs/gulp


왜 펄프가 여기에 관여합니까? 스크립트를 실행하면됩니다.
Ry-

0

밑줄 js 솔루션

let samplLst = [{id:1,title:Lorem},{id:2,title:Ipsum}]
let sampleKey = _.findLastIndex(samplLst,{_id:2});
//result would be 1
console.log(samplLst[sampleKey])
//output - {id:2,title:Ipsum}

0

이것은 객체의 키 / 값을 얻는 데 효과적이었습니다.

let obj = {
        'key1': 'value1',
        'key2': 'value2',
        'key3': 'value3',
        'key4': 'value4'
    }
    Object.keys(obj).map(function(k){ 
    console.log("key with value: "+k +" = "+obj[k])    
    
    })
    


-1

정말 간단합니다.

const CryptoEnum = Object.freeze({
                    "Bitcoin": 0, "Ethereum": 1, 
                    "Filecoin": 2, "Monero": 3, 
                    "EOS": 4, "Cardano": 5, 
                    "NEO": 6, "Dash": 7, 
                    "Zcash": 8, "Decred": 9 
                  });

Object.entries(CryptoEnum)[0][0]
// output => "Bitcoin"

6
객체 순서가 동일하다는 보장은 없습니다.
Downgoat

-2

간단하게 유지하십시오!

정교한 메소드 나 라이브러리를 통해 객체를 필터링 할 필요가 없습니다. Javascript에는 Object.values 라는 내장 함수가 있습니다.

예:

let myObj = {jhon: {age: 20, job: 'Developer'}, marie: {age: 20, job: 
'Developer'}};

function giveMeTheObjectData(object, property) {
   return Object.values(object[property]);
}

giveMeTheObjectData(myObj, 'marie'); // => returns marie: {}

객체 속성 데이터를 반환합니다.

참고 문헌

https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Object/values

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.