자바 스크립트 연관 배열의 길이
나는 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
'developer tip' 카테고리의 다른 글
Spring RESTTemplate을 사용한 제네릭 (0) | 2020.12.15 |
---|---|
IE8 CSS @ font-face 글꼴은 콘텐츠가 끝나기 전, 가끔 새로 고침 / 하드 새로 고침시에만 작동합니다. (0) | 2020.12.15 |
Spring은 Map Bean을 autowire 할 수 없습니다. (0) | 2020.12.15 |
서브 플롯의 파이썬 xticks (0) | 2020.12.15 |
SQL Server 2008 Express 데이터베이스에 모든 쿼리를 기록 하시겠습니까? (0) | 2020.12.15 |