Длина объекта JSON
Эта функция генерирует массив с объектами json на нем:
var estoque={};
function unpack_estoque(tnm,total,estoque_vl,id,tid,st) {
tnm=tnm.split("|");
total=total.split("|");
estoque_vl=estoque_vl.split("|");
id=typeof id != 'undefined' ? id.split("|") : null;
tid=typeof tid != 'undefined' ? tid.split("|") : null;
st=typeof st != 'undefined' ? st.split("|") : null;
for (var i in tnm)
estoque[i]={
"id": id != null ? id[i] : null,
"tid": tid != null ? tid[i] : null,
"total": total[i],
"estoque": estoque_vl[i],
"tnm": tnm[i],
"st": st != null ? st[i] : null
};
}
Теперь, как я могу получить длину estoque
для циклического перемещения собранных элементов?
estoque.length
возвращает undefined
, а for (var i in estoque)
- через объект JSON, а не estoque [] корневой массив.
Спасибо.
Ответы
Ответ 1
var estoque = {}; //object estoque.length will not work (length is an array function)
var estoque = new Array(); //estoque.length will work
Вы можете попробовать:
var estoque = new Array();
for (var i in tnm)
estoque.push({
"id": id != null ? id[i] : null,
"tid": tid != null ? tid[i] : null,
"total": total[i],
"estoque": estoque_vl[i],
"tnm": tnm[i],
"st": st != null ? st[i] : null
});
Теперь estoque будет массивом (который вы можете пересечь как один).
Ответ 2
Вы не получите этого для работы, поскольку это метод массива, а не объект. Вы можете использовать свойство длины tnm в качестве меры. Затем вы можете использовать:
var tnmLength = tnm.length;
for (i=0, i>tnmLength - 1; i++) {
estoque[tnm[i]] = {};
}
Пропустить все элементы в массиве tnm.
Ответ 3
a={a:{},b:{},c:{}}
Object.keys(a).length
3