[英]Javascript ignores multi-dimensional associative array keys/values - whats wrong here?
[英]How to define a multi-dimensional mixed array (includes keys and associative value) JavaScript
我創建了一個javaScript庫,文檔可以處理可變數量的<div class="gallery">
元素。 我想要定義一個多維數組,它存儲每個現有galery的信息。
var gallery = new Array;
gallery = ['images','imageActive','width'];
for (var i=0;i<$('.gallery').length;i++) {
gallery[i]['images'] = $('.gallery:eq['+i+'] img').index();
gallery[i]['imageActive'] = 0;
gallery[i]['width'] = $('.gallery:eq['+i+'] li').css('width');
}
我的做法完全錯了嗎? 陣列不是針對這種情況的嗎?
分配給對象{}
for (var i=0;i<$('.gallery').length;i++) {
gallery[i] = {};
gallery[i]['images'] = $('.gallery:eq['+i+'] img').index();
gallery = new Array
將創建一個空數組。 在訪問任何屬性之前,您需要先使用對象填充數組:
var gallery = [];
gallery = ['images','imageActive','width'];
for (var i=0;i<$('.gallery').length;i++) {
gallery.push({}); // increase length and add empty object
gallery[i]['images'] = $('.gallery:eq['+i+'] img').index();
gallery[i]['imageActive'] = 0;
gallery[i]['width'] = $('.gallery:eq['+i+'] li').css('width');
}
首先,你的第一個賦值( = new Array
array)是完全沒必要的,你用下一行覆蓋它,你在那里用字面語法創建一個數組。
我想你的意思是:
var gallery = [];
for (var i=0;i<$('.gallery').length;i++) {
gallery[i] = {
images: $('.gallery:eq['+i+'] img').index(),
imageActive: 0,
width: $('.gallery:eq['+i+'] li').css('width')
};
}
這會創建一個空白數組,然后在其中放入條目,其中每個條目都是一個對象(或“地圖”或“字典”,我們在JavaScript中不使用術語“關聯數組”以避免與數組混淆) 。 每個對象都有images
, imageActive
和width
屬性。
順便說一句,可能有一種更有效的方式來寫:
var gallery = $(".gallery").map(function() {
var entry = $(this);
return {
images: entry.find('img').index(),
imageActive: 0,
width: entry.find('li').css('width')
};
}).get();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.