簡體   English   中英

如何檢查Javascript對象的值是否為數組而不為空

[英]How to check if Javascript object value is array and not empty

在運行一些代碼之前,我需要檢查我正在傳遞的數據(從JSON文件)是否正確。

具體來說,我正在嘗試檢查電子郵件是否存在以及我的正文對象:-至少有一個鍵-每個鍵都有一個值-並且該值必須是一個數組,其中至少包含一個項目。

const email = "john@gmail.com"
const body = {
   "fruit": ["apple"],
   "vegetables": ["carrot", "beans"]
}

到目前為止,這是我嘗試過的方法:

if (email && Object.keys(body).length > 0 && Object.keys(body) instanceof Array) {
   // run some code
} else {
  // log error
}

實例化最好的方法在這里嗎? 我想知道是否應該使用.isArray()。 我也應該在Object.keys或Object.value上執行此操作嗎?

謝謝 :)

一種選擇是檢查bodyObject.values ,並查看它們中的每個是否.every長度為非零的數組:

 const email = "john@gmail.com" const body = { "fruit": ["apple"], "vegetables": ["carrot", "beans"] } const ok = email && Object.values(body).every(val => Array.isArray(val) && val.length !== 0); if (ok) { console.log('ok'); } else { // handle error } 

問題所在

Object.keys(body) instanceof Array

如果body是一個對象,它將始終返回true

 const email = "john@gmail.com" const body = { foo: 'bar' } console.log(Object.keys(body) instanceof Array); 

您可能要使用Object.keys並檢查每個值是一個數組並且至少具有一個值。

Object.keys(body).every(key => Array.isArray(body[key]) && body[key].length !== 0)

對於每個主體鍵,這將檢查它的值是一個數組(使用Array.isArray ),並且其中至少有一個元素(使用body[key].length )。

此外, .every僅在所有測試都通過 .every返回true。

Array.every MDN文檔

Object.keys MDN文檔

 const email = "john@gmail.com" const body = { "fruit": ["apple"], "vegetables": ["carrot", "beans"] } if (email && Object.keys(body).length > 0 && Object.keys(body).every(key => Array.isArray(body[key]) && body[key].length !== 0)) { console.log('hooray!'); } else { // log error } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM