2016-07-05 189 views
0

我找到字符串|字符串[]的長度,我有變量作爲數據類型var stepData : string | string[]。 有些時候我正在獲取單個字符串值,也有可能獲取字符串列表。使用數組的長度我正在做其他一些操作。 在我的代碼中,我正在使用stepData.length做一些for循環功能。在這裏,我的示例代碼Typescript字符串|字符串[]查找數組長度

const stepData: string|string[] = this.$stateParams.stepData; 

// Here two possible length value I am getting 
// If the stepData is string[] get length of array value 
// If the stepData is string get the length of string 
// The `lengthVar` depends on below for loop 

if (stepData.length > 0) { 
     var lengthVar = stepData.length; 
    for (var i = 0; i < lengthVar; i++) { 
      // Inside im writing some ajax call 
    } 
} 

如何找到的stepData確切數組的長度我想數組值只能用我打電話裏面AJAX方法。如果有任何建議,我正在嘗試任何錯誤或給你寶貴的建議,請。

+0

它不是很清楚你想要什麼。你想在兩種可能的'stepData'類型之間進行deffrinti?如果是這樣,怎麼樣?這個'dataId'是什麼?請解釋你想要的更好。 –

+0

.length是什麼問題?這正是你想要的兩種類型。 – AlexG

+0

準確地說,我想'stepData',當它的字符串和當它的字符串[]找到數組的長度,我正在調用AJAX裏面for循環 – SakthiSureshAnand

回答

1

就做這樣的事情:

const _stepData = (typeof stepData === 'string') ? [stepData] : stepData; 

然後遍歷它作爲一個數組。更一致,更少的錯誤。

1

你的問題很清楚,但我要猜測,你問如何知道stepData的值是否爲stringstring[],如果隨後的情況:

if (typeof stepData === "string") { 
    // stepData is a string 
} else { 
    // stepData is a string[] 
} 

if (stepData instanceof Array) { 
    // stepData is a string[] 
} else { 
    // stepData is a string 
} 

你可以讓你stepData不是const然後:

let stepData: string|string[] = this.$stateParams.stepData; 

if (typeof stepData === "string") { 
    stepData = [stepData]; 
} 

// now stapData is string[] 
1

從對這個問題您的評論:

裏面for我循環stepData.length。所以,如果它string只有一次,我應該重複,如果其string[]我應該找到字符串數組的長度那麼多時間,我重複

在這種情況下,你的代碼必須能夠與stringstring[]區分在運行時檢查。一個簡單的檢查來區分兩者將是typeof stepData === "string",這將是truestring s,但falsestring[] s。

if (typeof stepData === "string") { 
    // here stepData is a string 
} else { 
    // here stepData is a string[] 
} 
1

如果你想知道,如果一些變量是一個字符串或字符串[]你可以使用instanceof關鍵字:

if(stepData instanceof Array<string>) { 
... 
} else { 
... 
} 

if(typeof stepData === "string") { 
... 
} else { 
... 
} 
+2

你不能在'string'(或'String')上使用'instanceof',並且檢查它是否爲''object''並不能使它達到目的可以是很多東西 –

+0

你是對的! 感謝您的建議! –