Вы выполняете итерацию дважды (один для переменной name
и один для переменной age
).
Если вы уверены, что массивы, хранящиеся в name
и age
, имеют одинаковые значения размер, вы можете просто перебрать один из них и использовать индекс итерации для доступа к другому элементу:
$.each(name, function(index, name_value){
var age_value = age[index];
$('#myTableID2 #user-id2').append('<tr><td >'+name_value+'</td><td >'+age_value+'</td></tr>');
});
Кроме того, ваш код представляет некоторые неконтролируемые вещи:
- Вы извлекаете данные из
localStorage
, но не проверяете, нет ли данных:
age = localStorage.getItem('age')
может вернуть ноль, если в localStorage
нет данных. В этом случае ваш код сломается, так как вы будете вызывать метод split
с нуля.
То, как вы проверяете, являются ли
age
и
name
пустыми, немного сбивает с толку. Вам бы лучше проверить его длину:
if (name.length > 0)
Если вы храните данные в
localStorage
, я бы порекомендовал вам хранить
age
и
name
вместе под одним ключом:
localStorage.setItem('users', JSON.stringify([
{ name: 'Kelvin', age: 9 },
{ name: 'James', age: 10 }
]));
, чтобы вы были уверены что при получении информации у вас будет одинаковое количество элементов для name
и age
:
var data = localStorage.getItem('users') || '[]';
var users = JSON.parse(data);
if (users.length > 0) {
$('#myTableID2 #user-id2').append(users.map(function(user) {
return '<tr><td >'+ user.name+'</td><td >'+user.age+'</td></tr>';
});
}