2015-06-22 4 views
0

Я хочу, чтобы цикл прошел от 1 до 21, а затем использовал эти номера циклов для получения массива строк ['e1.wkh', ... 'e21.wkh']. Но сейчас единственное, что я получил, это ['e21.wkh'].Использование значения цикла внутри массива

function calculateStats() { 

    var obj = {} 

    var deviceId = "34534"; 

    for (var i = 1; i <= 21; i++) { 

     var loo = i.toString(); 

     console.log(loo); 

     obj[deviceId] = ['e' + loo + '.kwh']; 

     console.log(obj[deviceId]); 
    } 

} 
+0

Причина в том, что вы всегда используете 'deviceId' в качестве имени элемента здесь:' OBJ [DeviceId ] = ['e' + loo + '.kwh']; 'Итак, вы всегда перезаписываете последнее значение' obj [deviceId] 'Как должны быть названы элементы в вместо него? – Markai

+0

индекс вашего объекта obj остается таким же для цельного цикла, что является вашей проблемой в выражении obj [deviceId] = ['e' + loo + '.kwh']; вам нужно изменить это и сделать индекс инкрементным для хранения всех значений, генерируемых вашим циклом. – Vishnu

ответ

1

Заменить ниже линии

obj[deviceId] = ['e' + loo + '.kwh']; 

С

(obj[deviceId])?obj[deviceId].push('e' + loo + '.kwh'):obj[deviceId]=['e' + loo + '.kwh']; 
1

Вот возможное решение:

Этот вопрос вы переписав OBJ [DeviceId].

function calculateStats() { 

    var obj = {} 

    var deviceId = "[email protected]"; 

    obj[deviceId] = []; 

    for (var i = 1; i <= 21; i++) { 

     var loo = i.toString(); 

     console.log(loo); 

     obj[deviceId].push('e' + loo + '.kwh'); 

     console.log(obj[deviceId]); 
    } 

} 

https://jsfiddle.net/q651uhde/

+0

obj [deviceId] должен быть равен массиву 'e' + loo + '.kwh' – developer

+0

Я обновил jsfiddle. Это массив 'e' + loo + '.kwh'. –

+0

У меня есть такая ошибка: Uncaught TypeError: Не удается прочитать свойство «push» undefined – developer

0

функция calculateStats() {

вар OBJ = [];

var deviceId = "[email protected]"; 

for (var i = 1; i <= 21; i++) { 

    var loo = i.toString(); 

    console.log(loo); 

    obj.push('e' + loo + '.kwh'); 


} 

console.log (obj);

} obj несет ваш массив, это то, что вы хотите?

0

Сначала настройте массив, а затем нажмите на него каждую строку. Не нужно преобразовывать индекс в строку, поскольку он будет принудительно привязан к строке, когда вы будете нажимать ее на массив.

function calculateStats() { 

    var obj = {}; 
    var deviceId = "[email protected]"; 
    obj[deviceId] = []; 

    for (var i = 1; i <= 21; i++) { 
    obj[deviceId].push('e' + i + '.kwh'); 
    } 

} 

DEMO

Смежные вопросы