#javascript #node.js #json
#javascript #node.js #json
Вопрос:
Я пытаюсь проверить в JavaScript, является ли значение из json пустым списком или нет. Я, очевидно, пробовал json.bundleProductSummaries != [] . Это не работает, однако это работает:
JSON.stringify(json.bundleProductSummaries) != JSON.stringify([])
Мой json :
{
"bundleProductSummaries": [
]
}
Мой код :
fs = require('fs')
body = fs.readFileSync('./json.txt',{encoding : 'utf-8'})
// ---- Parsing de body ----
let json = JSON.parse(body);
let colored = null;
if(json.bundleProductSummaries != []){
json = json.bundleProductSummaries[0];
}
Спасибо за ваши будущие ответы!
Синдорик
Комментарии:
1. В чем проблема. Вы хотите знать объяснение кода…
Ответ №1:
Вам нужно проверить длину
json.bundleProductSummaries.length === 0
Потому что в JS
console.log([] === [] )
поскольку это две разные ссылки на память.
Но когда два массива будут оцениваться как true?
Когда они оба, значение, которое вы сравниваете, имеет одинаковую ссылку
let a = []
console.log(a === a)
Комментарии:
1. Спасибо за ваш ответ. То есть, по сути, он ведет себя как указатель в C? Я полагаю, что это также относится к dict и другим подобным структурам.
Ответ №2:
Вы можете проверить length
массив, чтобы проверить, пуст ли он
let obj = {
"bundleProductSummaries": []
}
console.log(obj.bundleProductSummaries.length === 0)
В вашем случае вам может просто не понадобиться сравнивать, потому что вы используете это в if
инструкции и 0
само по себе является ложным значением.
let obj = {
"bundleProductSummaries": []
}
if(!obj.bundleProductSummaries.length){
console.log("Array is empty")
}