다음과 같은 개체가있는 경우 :
{ 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' }
객체를 반복하는 것 외에 목록이 'c'까지 올라간다는 것을 미리 알지 못하는 경우 객체의 마지막 항목을 가져올 수있는 방법이 'carrot'있습니까 (예 :) ?
다음과 같은 개체가있는 경우 :
{ 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' }
객체를 반복하는 것 외에 목록이 'c'까지 올라간다는 것을 미리 알지 못하는 경우 객체의 마지막 항목을 가져올 수있는 방법이 'carrot'있습니까 (예 :) ?
답변:
아니요. JSON 및 대부분의 다른 키-값 데이터 구조에서는 순서가 보장되지 않으므로 마지막 항목은 때때로있을 수 carrot있고 다른 때는 계속 될 수 있습니다 banana. 주문에 의존 해야하는 경우 가장 좋은 방법은 어레이를 사용하는 것입니다. 키-값 데이터 구조의 힘은 객체 keys의 nth항목 을 가져올 수 없다는 것이 아니라으로 값에 액세스하는 데 있습니다.
[]실제로는 객체입니다. JS에는 이와 같은 연관 배열이 없으며 배열에는 인덱스 액세스 및 시퀀스가 있습니다. 객체에는 비 순차적 연관 속성 액세스 권한이 있습니다.
예, 사용하는 방법이 Object.keys(obj)있습니다. 이 페이지 에서 설명 합니다 .
var fruitObject = { 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' };
Object.keys(fruitObject); // this returns all properties in an array ["a", "b", "c"]
마지막 개체의 값을 얻으려면 다음을 수행 할 수 있습니다.
fruitObject[Object.keys(fruitObject)[Object.keys(fruitObject).length - 1]] // "carrot"
Object.keys굉장 하게 작동 하는 받아 들여진 것이어야했습니다 . IE8 및 7에서 작동하도록하는 방법을 찾아야합니다. IE9에서만 표시 되었기 때문입니다.
Object.keys속성이 실제로 무작위로 정렬되었음을 발견하기 위해 계속해서 사용해 보았습니다 . 실제 속성 순서는 브라우저 콘솔에 로그인 할 때 표시되는 것과 다릅니다. 브라우저 콘솔에 로그인하면 속성이 자동으로 재정렬되고 알파벳 / 숫자 순으로 표시되므로 혼란이 발생합니다.
last = Object.keys(obj)[Object.keys(obj).length-1];
여기서 obj는 객체입니다.
'c'이 경우)를 얻지 만 질문은 질문자가 마지막 값 ( 'carrot')을 찾고 있음을 암시하는 방식으로 표현됩니다 . 이것은 또한 정말 이미이 적용되지 않습니다 아무것도 추가하지 않습니다 크리스티나 스테파노바의 답변을
Javascript의 개체 속성 순서에 관해서는 다음 답변에 연결하겠습니다.
구체적으로 특별히:
ECMAScript의 모든 최신 구현은 정의 된 순서대로 객체 속성을 반복합니다.
따라서 여기에있는 다른 모든 답변은 정확합니다. 객체 속성에 대한 공식적인 보장 된 순서는 없습니다. 그러나 실제로는 (공식적으로 정해진 행동조차도 자연스럽게 망칠 수있는 버그를 제외하고) 있습니다.
또한 객체 속성의 사실상 열거 순서는 향후 EMCAScript 사양에 성문화 될 것입니다.
그래도 현재로서는이 문제에 대한 코드를 작성하지 않을 것입니다. 대부분 개체 속성 순서를 처리하는 데 도움이되는 기본 제공 도구가 없기 때문입니다. 직접 작성할 수 있지만 결국에는 객체의 각 속성을 반복하여 위치를 결정합니다.
귀하의 질문에 대한 대답은 No 이므로 객체를 반복하는 것 외에는 방법이 없습니다.
순서가 중요하다면 객체 리터럴이 아닌 배열을 사용하십시오.
list = ['apple', 'banana', 'carrot'];
또는 같은
dict = {
'a' : ['apple', 'awesome'],
'b' : ['best friend']
};
또는..
dict = [{letter:'a', list:['apple', 'awesome']},{letter:'b', list:['best friend']}];
에 대한 키의 dict순서가 전혀 보장되지는 않습니다.
자바 스크립트의지도 객체 . 벌써 3 살 정도 됐어요. 이 맵 데이터 구조는 항목이 삽입되는 순서를 유지합니다. 이 마지막 항목을 검색하면 실제로지도에 최신 항목이 삽입됩니다.
하자 obj개체 수. 간부 :
(_ => _[Object.keys(_).pop()])( obj )