Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Узнать длину после преобразования в объект (https://javascript.ru/forum/misc/70148-uznat-dlinu-posle-preobrazovaniya-v-obekt.html)

FALKOR 15.08.2017 13:08

Узнать длину после преобразования в объект
 
Добрый день.

Нужно получить информацию с 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'

ksa 15.08.2017 13:20

Цитата:

Сообщение от 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;

У объекта нет такого свойства. :no:

Цитата:

Сообщение от 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

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)

ksa 15.08.2017 13:30

Цитата:

Сообщение от 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);


Часовой пояс GMT +3, время: 03:28.