15.08.2017, 13:08
|
Новичок на форуме
|
|
Регистрация: 16.04.2016
Сообщений: 5
|
|
Узнать длину после преобразования в объект
Добрый день.
Нужно получить информацию с localStorage, в виде объекта
order = JSON.parse(localStorage.getItem('basketwidjet'));
И запустить цыкл равный количеству элементов в объекте, но:
order.length === undefined;
Строка выглядит примерно следующим образом
'"{"1":{"id":1,"name":"Артикул 2","price":299,"num":1,"url":"http://site/","photo":""},"2":{"id":2,"name":"Артикул 2","price":220,"num":1,"url":"http://site/","photo":""},"3":{"id":3,"name":"Артикул 6","price":179,"num":1,"url":"http://site/","photo":""}}"'
Мне необходимо сделать список всех 'name' и вывести сумму всех 'price'
|
|
15.08.2017, 13:20
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,210
|
|
Сообщение от FALKOR
|
Строка выглядит примерно следующим образом
'"{"1":{"id":1,"name":"Артикул 2","price":299,"num":1,"url":"http://site/","photo":""},"2":{"id":2,"name":"Артикул 2","price":220,"num":1,"url":"http://site/","photo":""},"3":{"id":3,"name":"Артикул 6","price":179,"num":1,"url":"http://site/","photo":""}}"'
|
Второй и предпоследний символ - лишние.
Сообщение от FALKOR
|
но:
order.length === undefined;
|
У объекта нет такого свойства.
Сообщение от FALKOR
|
Мне необходимо сделать список всех 'name' и вывести сумму всех 'price'
|
var str='{"1":{"id":1,"name":"Артикул 2","price":299,"num":1,"url":"http://site/","photo":""},"2":{"id":2,"name":"Артикул 2","price":220,"num":1,"url":"http://site/","photo":""},"3":{"id":3,"name":"Артикул 6","price":179,"num":1,"url":"http://site/","photo":""}}'
var o = JSON.parse(str);
var sum=0;
for (var i in o) {
alert(o[i].name);
sum+=o[i].price;
};
alert('sum='+sum);
|
|
15.08.2017, 13:24
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
FALKOR,
var basketwidjet = '{"1":{"id":1,"name":"Артикул 2","price":299,"num":1,"url":"http://site/","photo":""},"2":{"id":2,"name":"Артикул 2","price":220,"num":1,"url":"http://site/","photo":""},"3":{"id":3,"name":"Артикул 6","price":179,"num":1,"url":"http://site/","photo":""}}',
order = JSON.parse(basketwidjet),
l = Object.keys(order).length,
n = Object.keys(order).map(function (key) {
return order[key].name
}),
s = Object.keys(order).reduce(function (a,key) {
return a + order[key].price
},0);
alert(l);
alert(n)
alert(s)
Последний раз редактировалось рони, 15.08.2017 в 13:27.
|
|
15.08.2017, 13:30
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,210
|
|
Сообщение от FALKOR
|
Строка выглядит примерно следующим образом
'"{"1":{"id":1,"name":"Артикул 2","price":299,"num":1,"url":"http://site/","photo":""},"2":{"id":2,"name":"Артикул 2","price":220,"num":1,"url":"http://site/","photo":""},"3":{"id":3,"name":"Артикул 6","price":179,"num":1,"url":"http://site/","photo":""}}"'
|
Вариант с массивом смотрится более эстетично...
var str='[{"id":1,"name":"Артикул 2","price":299,"num":1,"url":"http://site/","photo":""},{"id":2,"name":"Артикул 2","price":220,"num":1,"url":"http://site/","photo":""},{"id":3,"name":"Артикул 6","price":179,"num":1,"url":"http://site/","photo":""}]'
var a = JSON.parse(str);
var sum=0;
for (var i=0; i<a.length; i++) {
alert(a[i].name);
sum+=a[i].price;
};
alert('sum='+sum);
|
|
|
|