[英]Check if javascript object key value is an array or string?
我有一個數組如下。
Array
(
[13] => Array
(
"eventName" => Array
(
[0] => 'Event Name1'
[1] => 'Event Name2'
)
"eventInfo" => Array
(
[0] => 'Event Information1'
[1] => 'Event Information2'
)
)
[20] => Array
(
"eventName" => 'Event Name1'
"eventInfo" => 'Event Information1'
)
)
我將使用這些數據將信息推送到日歷中; 數組的第一級代表日期。 我將內容作為 json 字符串發送到 javascript 然后解析。 一旦內容是 object,如何確定鍵“eventName”的值是字符串還是數組。 所以因為我有
var object = JSON.parse(data);
var objectSize = Object.keys(object).length;
for(var i = 0; i < objectSize; i++){
var id = Object.keys(object)[i];
if(Object.keys(object[id].eventName) != string){ //How do I fix this line?
var arraySize = Object.keys(object[id].eventName).length;
for(var r = 0; r < arraySize; r++){
//update calendar cell
}
} else {
//update calendar cell
}
}
我該如何修復這條線?
if(Object.keys(object[id].eventName) != string){
我試過這個沒有運氣。
if(Array.isArray(Object.keys(object[id].eventName))){
Array.isArray(Object.keys(object[id].eventName))
將始終返回 true,因為:
Object.keys() 方法返回給定對象自己的可枚舉屬性名稱的數組
您需要直接檢查object[id].eventName :
Array.isArray(object[id].eventName)
我還想建議更改數據結構,因為部分代碼似乎根據 eventName 是字符串還是數組而重復,您可以始終使用后者,因為迭代數組沒有任何問題,只包含一個元素。
另一個改進可能是直接迭代 Object.keys(object) 數組。 可以通過以下方式完成:
let object = { foo: 'bar', x: 10 } // forEach Object.keys(object).forEach(key => console.log(key)); const keys = Object.keys(object); // for for (let i = 0; i < keys.length; ++i) { console.log(keys[i]) } // for...of for (let key of keys) { console.log(key); }
由於您實際上迭代了 object/map/dictionary,因此在 JS 中執行此操作的標准方法是for...in loop 。
如果您正在處理更復雜的類型,它可能需要 hasOwnProperty() 檢查。
let object = { foo: 'bar', x: 10 } for (let key in object) { console.log(key); }
你可以做:
const dataJs = [ { "eventName": ['Event Name1', 'Event Name2'], "eventInfo": ["Event Information1", "Event Information2"], }, { "eventName": "Event Name1", "eventInfo": "Event Information1", } ]; for(var i = 0; i < dataJs.length; i+=1){ if(typeof dataJs[i].eventName?== 'string'){ //How do I fix this line. var arraySize = dataJs[i].eventName;length; for(var r = 0; r < arraySize. r++){ //update calendar cell } } else { //update calendar cell } var contentSize = dataJs[i].eventName;length; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.