그러면 왜이 값이 0이되며 실제 크기는 어떻게 찾습니까?리터럴 배열의 길이를 찾는 방법은 무엇입니까?
var array = [];
array["foo"] = "bar";
array["bar"] = "foo";
document.write(array.length);
그러면 왜이 값이 0이되며 실제 크기는 어떻게 찾습니까?리터럴 배열의 길이를 찾는 방법은 무엇입니까?
var array = [];
array["foo"] = "bar";
array["bar"] = "foo";
document.write(array.length);
그 속성으로 구성되는 객체가, 당신은 이런 식으로 뭔가해야 할 것입니다 (연관 배열 개념적으로 유사한, 또는 해시 테이블) 키/값 쌍의 형태를 취할 이후 :
을Object.size = function(obj) {
var size = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) size++;
}
return size;
};
var array = [];
array["foo"] = "bar";
array["bar"] = "foo";
var size = Object.size(array);
은 기본적으로 당신은
array["foo"] = "bar"
은 그냥 객체 인 배열에 좀 더 속성을 추가 할 때. 자바 스크립트에서 array.foo와 array [ 'foo']는 같은 의미입니다. 어쩌면 내가 순진하고있어
감사를 간다. 하지만 질문에 대답하지 않습니까? – Mantar
개체로 변환하지 않습니다. 배열 *은 * 객체이므로 임의의 속성을 설정할 수 있습니다. – lonesomeday
는 (내 자바 스크립트는 될 일을하지 않습니다)하지만이 같은 안 :
var array = [];
array[0] = "bar";
array[1] = "foo";
document.write(array.length);
실제 크기는 0 당신이 어떤을 두지 않았기 때문이다 항목을 배열 객체로 변환 - 이는 메서드 (푸시 등) 또는 인덱스 속성 (또는 생성자)에 값을 할당하는 방법으로 만 수행 할 수 있습니다.
마찬가지로, 배열이 아니라 객체를 다루고 있습니다. 질문 자체에서 객체의 속성을 계산하는 방법에 대한 지침은 How to efficiently count the number of keys/properties of an object in JavaScript?을 참조하십시오.
당신은하지 그것을 새로운 요소를 제공, 배열에 속성을 설정합니다. 배열은 다른 Javascript 객체와 마찬가지로 임의의 속성을받을 수 있습니다. 예를 들어 :
var foo = {};
foo['bar'] = 'foobar';
console.log(foo); // outputs {bar: 'foobar'}
첫째 : 당신은 키 => 값 쌍을 원하는 경우
var foo = [];
foo.push('foobar');
console.log(foo); // outputs ['foobar']
, 대신 개체를 사용 : 배열에 항목을 추가하려면
var foo = [];
foo.bar = 'foobar';
console.log(foo.bar); // outputs 'foobar'
console.log(foo); // outputs [] -- empty array
, Array.push
사용 array
에있는 항목 수가 0이기 때문에 길이가 0입니다.
이 구문 array["foo"] = "bar"
foo
이라는 값을 가진 bar
속성을 만듭니다. 모든이다 http://jsfiddle.net/VyjJD/3/
var array = [];
array["foo"] = "bar";
array["bar"] = "foo";
array.bin = function() { return "bin"; };
array[0] = "bar";
array[1] = "foo";
array[2] = "bin";
array[3] = "bat";
var props = 0;
for (key in array)
props++;
document.write(array.length + "<br />"
+ props + "<br />"
+ (array.foo == array["foo"]) + "<br />"
+ array.bar + "<br />"
+ array.bin());
공지 사항 array.length = 4
있다고하지만 props = 7
: 길이는 배열에 아무것도 추가하지 않은 때문에, 당신은 단지
작업 버전 여기 배열에 새 속성을 설정 한 여전히 0 배열의 항목 및 속성 수를 반환합니다.
+100 좋은 설명. 고맙습니다. – Radek
또는 Object.prototype.size = function() ... 다음과 같이 사용할 수 있습니다. var size = array.size() –
... 일반 함수이거나' getSize (var);' – karim79
JS에는 연관 배열과 같은 것이 없습니다. 그것은 객체이고 속성에 액세스하는 대체 구문입니다. 'array [ "foo"]'대신'array.foo'라고 쓸 수 있습니다. 이것이 length 속성이 작동하지 않는 이유입니다. 그는 배열 객체에 속성을 설정하고 배열에 항목을 추가하지 않습니다. – DanMan