Как получить длину объекта JSON, хранящегося в localStorage? - PullRequest
0 голосов
/ 04 мая 2019

У меня есть приложение REACT JS, в котором объект JSON CartObj хранится в localStorage в следующем формате:

{
        "Master Automotives": [
            {
                "SparePartID": "43",
                "Name": "Oil and Lubricants",
                "Price": "4500",
                "VendorID": "48",
                "CompanyName": "Master Automotives",
                 "Qty": 1,
                 "TotalPrice": "4500"

            },
            {
                "SparePartID": "45",
                "Name": "Lights",
                "Price": "2300",
                "VendorID": "48",
                "CompanyName": "Master Automotives",
                 "Qty": 1,
                 "TotalPrice": "2300"
            }
        ],

        "Repair Solutions": [
            {
                "SparePartID": "47",
                "Name": "Steering Wheel",
                "Price": "1500",
                "VendorID": "60",
                "CompanyName": "Repair Solutions",
                 "Qty": 1,
                 "TotalPrice": "1500"
            }
        ],
        

         "FiveStar Automotives": [
            {
                "SparePartID": "51",
                "Name": "Brakes",
                "Price": "234",
                "VendorID": "70",
                "CompanyName": "FiveStar Automotives",
                 "Qty": 1,
                 "TotalPrice": "234"
            },
            {
                "SparePartID": "53",
                "Name": "Clutch",
                "Price": "999",
                "VendorID": "70",
                "CompanyName": "FiveStar Automotives",
                 "Qty": 1,
                 "TotalPrice": "999"
            },
              {
                "SparePartID": "55",
                "Name": "LED",
                "Price": "288",
                "VendorID": "70",
                "CompanyName": "FiveStar Automotives",
                 "Qty": 1,
                 "TotalPrice": "288"
            }
        ]
    
}

Я хочу получить длину этого выше JSON Object , который хранится в моем localStorage как " CartObj ". Как мы видим, приведенные выше данные имеют в общей сложности 6 (шесть) различных продуктов, поэтому я хочу получить длину, равную 6.

Я использовал приведенный ниже код, но он получает очень большое значение , например 23876:

const lenObj = JSON.stringify(localStorage.getItem('storeObj'));
        const len = lenObj.length;
        console.log("JSON obj length: ",len);

Пожалуйста, , помогите Мне, как правильно определить длину этого JSON Объекта.

Ответы [ 3 ]

2 голосов
/ 04 мая 2019

localStorage.getItem возвращает строку, поэтому вы должны использовать JSON.parse не JSON.stringfy

И еще одна вещь, что ваш JSON не является одним массивом, он содержит несколько массивов, если вы хотите сосчитать всю длину, вы должны выполнить итерации объектов.

Вот решение.

const lenObj = JSON.parse(localStorage.getItem('storeObj'));
var count = 0;
for(var item in lenObj) {
   count += lenObj[item].length
}
console.log("JSON obj length: ",count);
1 голос
/ 04 мая 2019

Используйте это:

const cart = JSON.parse(localStorage.getItem('storeObj'));
const cartLength = Object.values(cart).flat().length;

Или в одну строку:

const cartLength = Object.values(JSON.parse(localStorage.getItem('storeObj'))).flat().length;
0 голосов
/ 04 мая 2019

Вы можете использовать Object.values:

function getLength(obj) {
  return (Object.values(obj)).flat().length

}

console.log(getLength(obj)); // => 6

const obj = {
	'Master Automotives': [
		{
			SparePartID: '43',
			Name: 'Oil and Lubricants',
			Price: '4500',
			VendorID: '48',
			CompanyName: 'Master Automotives',
			Qty: 1,
			TotalPrice: '4500',
		},
		{
			SparePartID: '45',
			Name: 'Lights',
			Price: '2300',
			VendorID: '48',
			CompanyName: 'Master Automotives',
			Qty: 1,
			TotalPrice: '2300',
		},
	],

	'Repair Solutions': [
		{
			SparePartID: '47',
			Name: 'Steering Wheel',
			Price: '1500',
			VendorID: '60',
			CompanyName: 'Repair Solutions',
			Qty: 1,
			TotalPrice: '1500',
		},
	],

	'FiveStar Automotives': [
		{
			SparePartID: '51',
			Name: 'Brakes',
			Price: '234',
			VendorID: '70',
			CompanyName: 'FiveStar Automotives',
			Qty: 1,
			TotalPrice: '234',
		},
		{
			SparePartID: '53',
			Name: 'Clutch',
			Price: '999',
			VendorID: '70',
			CompanyName: 'FiveStar Automotives',
			Qty: 1,
			TotalPrice: '999',
		},
		{
			SparePartID: '55',
			Name: 'LED',
			Price: '288',
			VendorID: '70',
			CompanyName: 'FiveStar Automotives',
			Qty: 1,
			TotalPrice: '288',
		},
	],
};

function getLength(obj) {
  return (Object.values(obj)).flat().length

}

console.log(getLength(obj));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...