code

자바 스크립트 개체의 마지막 항목 가져 오기

codestyles 2020. 10. 6. 08:13
반응형

자바 스크립트 개체의 마지막 항목 가져 오기


다음과 같은 개체가있는 경우 :

{ 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' }

객체를 반복하는 것 외에 목록이 'c'까지 올라간다는 것을 미리 모르는 경우 객체의 마지막 항목을 가져올 수있는 방법이 'carrot'있습니까 (예 :) ?


아니요. JSON 및 대부분의 다른 키-값 데이터 구조에서는 순서가 보장되지 않으므로 마지막 항목은 때때로있을 수 carrot있고 다른 때는 그럴 수도 있습니다 banana. 주문에 의존 해야하는 경우 가장 좋은 방법은 어레이를 사용하는 것입니다. 키-값 데이터 구조의 힘은 객체 keysnth항목 을 가져올 수있는 것이 아니라으로 값에 액세스하는 데 있습니다.


예,를 사용하는 방법이 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).length-1] // "carrot"

last = Object.keys(obj)[Object.keys(obj).length-1];

여기서 obj는 객체입니다.


var myObj = {a: 1, b: 2, c: 3}, lastProperty;
for (lastProperty in myObj);
lastProperty;
//"c";

출처 : http://javascriptweblog.wordpress.com


ES6의 구조화 할당 구문을 사용하는 솔루션 :

var temp = { 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' };
var { [Object.keys(temp).pop()]: lastItem } = temp;
console.info(lastItem); //"carrot"


Javascript의 개체 속성 순서에 관해서는 다음 답변에 연결하겠습니다.

"for (… in…)"루프의 요소 순서

구체적으로 특별히:

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순서가 전혀 보장되지는 않습니다.


JSArray = { 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' };  
document.write(Object.keys(JSArray)[Object.keys(JSArray).length-1]);// writes 'c'   
document.write(JSArray[Object.keys(JSArray)[Object.keys(JSArray).length-1]]); // writes 'carrot'

다음 Object.values()방법을 사용할 수도 있습니다 .

Object.values(fruitObject)[Object.values(fruitObject).length - 1]; // "carrot"

자바 스크립트의지도 객체 . 벌써 3 살 정도 됐어요. 이 맵 데이터 구조는 항목이 삽입되는 순서를 유지합니다. 이 마지막 항목을 검색하면 실제로 최신 항목이 맵에 삽입됩니다.


Let obj be your object. Exec:

(_ => _[Object.keys(_).pop()])( obj )

if you mean get the last key alphabetically, you can (garanteed) :

var obj = { 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' };
var keys = Object.keys(obj);
keys.sort();
var lastkey = keys.pop() // c
var lastvalue = obj[lastkey] // 'carrot'

참고URL : https://stackoverflow.com/questions/4317456/getting-the-last-item-in-a-javascript-object

반응형