developer tip

자바 스크립트 연관 배열의 길이

copycodes 2020. 12. 15. 19:27
반응형

자바 스크립트 연관 배열의 길이


나는 JS 연관 배열을 가지고 (또는 객체로 호출하는 것이 좋습니다) 같은 말을

var quesArr=new Array();
quesArr["q101"]="Your name?";
quesArr["q102"]="Your age?";
quesArr["q103"]="Your school?";

이 배열의 길이를 얻을 수있는 내장 함수 나 jQuery 또는 다른 라이브러리의 솔루션이 있습니까? 현재 quesArr.length는 대부분의 사용자가 알고 있어야하는 것처럼 0을 제공합니다.

이 질문 에서 언급했듯이 전체 배열 / 객체를 반복하는 것을 제안하지 마십시오 . 왜냐하면 내가 가진 배열 / 객체가 매우 크기 때문입니다.

이 작업을 진행할 수있는 방법이 있습니까?


아니요, 개체에 포함 된 속성 수 (찾고있는 항목)를 알려주는 기본 제공 속성이 없습니다.

내가 생각할 수있는 가장 가까운 것은 ES5 이상의 기능 Object.keys( spec | MDN )이며 다음과 같이 사용할 수 있습니다.

console.log(Object.keys(quesArr).length); // "3"

Object.keys객체 고유의 열거 가능한 속성 이름 배열을 반환합니다. 그러나 내부적으로는 물론 사용하고 싶지 않은 루프입니다 (물론 ES5 이전 환경을위한 polyfill은 루프를 사용합니다).

또 다른 ES5 + 기능 Object.getOwnPropertyNames( spec | MDN )이 있는데, 열거 가능한지 여부에 관계없이 객체의 "자신"속성 이름 배열을 반환합니다.

둘 다 모호하게 현대적인 모든 것에서 지원됩니다 . IE9 + 및 최소 2011 년 이후의 Chrome, Firefox 및 Safari 버전.


FWIW, Array개체 기능 을 사용 하지 않는 한 배열로 만들지 마십시오. 대신 :

var quesArr={};
quesArr["q101"]="Your name?";
quesArr["q102"]="Your age?";
quesArr["q103"]="Your school?";

(배열을 사용하든 일반 객체를 사용하든) 이러한 키를 원하지 않는 경우 대괄호 안에 문자열 리터럴로 지정할 필요가 없습니다.

var quesArr={};
quesArr.q101="Your name?";
quesArr.q102="Your age?";
quesArr.q103="Your school?";

그러나 원하는 경우 다른 표기법을 사용할 수 있습니다. 점 표기법을 사용하는 경우 키가 유효한 식별자 여야한다는 점을 제외하면 정확히 동일합니다 (괄호로 묶인 표기법으로 무엇이든 가능).

다음과 같이 할 수도 있습니다.

var quesArr={
    q101: "Your name?",
    q102: "Your age?",
    q103: "Your school?"
};

또는 (키가 유효한 식별자가 아닌 경우) :

var quesArr={
    "q101": "Your name?",
    "q102": "Your age?",
    "q103": "Your school?"
};

다음이 있다고 가정합니다.

var myObject = {};  // denotes an Object is being created  
myObject.city = "Chennai";  
myObject.state = "Tamilnadu";  
myObject.country = "Indian Peninsula";  
console.log(myObject.length);  // results in undefined  

하지만 최신 브라우저에서는 길이를 계산하는 방법이 있습니다 (Chrome, FF4 +, IE9).

Object.keys(myObject);  
// --> ["city", "state", "country"]
Object.keys(myObject).length
// --> 3

길이라는 연관 요소로 배열의 길이를 추적하여 연관 배열 길이 문제를 처리 할 수도 있습니다.

일명 :

myArray["length"]=0;

요소를 추가하거나 제거 할 때 요소에서 단순히 더하거나 빼면됩니다 myArrary["length"].

그런 다음 다음과 같은 작업을 수행 할 수 있습니다.

theLength=myArray.length;

Associative array does not have length property you can get length

ReferenceURL : https://stackoverflow.com/questions/10563251/length-of-a-javascript-associative-array

반응형