2016-05-12 3 views
2

Я хочу создать динамический массив налогов в JavaScript, для которых я использовал следующий код:Динамический массив в JavaScript

$("table").on("focusout",".tax_amount",function(e){ 
    var IDs = new Array(); 
    $('.tax_amount').each(function(){ 
     k = this.id; 
     if(typeof IDs[k] === 'undefined') { 
      IDs[k] = parseFloat(this.value);    
     }else{ 
      IDs[k]+= parseFloat(this.value); 
     } 
    }); 
    console.log(IDs);  
}); 

Теперь я хочу итерацию, что идентификаторы массив для создания таблицы. Но .length & .size() не работают с массивом ID. Когда я вижу результат массива в консоли он показывает следующее

enter image description here

Невозможно получить, как использовать этот массив для $ .each.

Я решил его, используя следующий код:

var IDs = {} 
    $('.tax_amount').each(function(){ 
     k = this.id; 
     if(k in IDs) { 
      IDs[k]+= parseFloat(this.value); 
     }else{ 
      IDs[k] = parseFloat(this.value);     
     } 
    }); 
    console.log(IDs.length); 
    $.each(IDs,function(key,index){ 
     console.log(key); 
     console.log(index); 
    }); 

Спасибо большое Квентин для направления в правильном направлении.

ответ

8

size() не работает, потому что объекты массива не имеют метода размера.

length не работает, потому что:

Длина свойство представляет беззнаковое, 32-разрядное целое число, которое всегда численно больше, чем самый высокий индекс в массиве.

Вы не указали индексы в массиве.

Вы добавили по названию.

$.each не работает, потому что при задании массива он итерации по индексам, и снова вы его не получили.

Если вы хотите использовать именованные свойства, используйте объект, а не массив. Массивы предназначены для численных индексированных и упорядоченных данных.

+0

ОК, тогда массив бесполезен в моем случае. И мне нужен объект. –

+0

благодарит за информацию. Это помогает мне решить проблему. –

0

Я надеюсь, что ваше требование этого

  $("table").on("focusout",".tax_amount",function(e){ 

       var IDs = new Array(); 

       $('.tax_amount').each(function(){ 
        k = this.id; 
        if(typeof k === 'undefined') { 
         IDs.push(parseFloat(this.value));   
        }else{ 
         k += parseFloat(this.value); 

         IDs.push(k); 
        } 
       }); 
       console.log(IDs);  
      }); 
0

Использование var arr = new Array();

then arr.push(itemValue); ввести элементы, как многие, как вы хотите

для перебора массива и доступа к значениям,

arr.forEach(myFunction); 
function myFunction(item, index) { 
    console.log(item); 
    console.log(index); 
} 
Смежные вопросы