我找到了string | string的长度,我将变量作为var stepData : string | string[]
的数据类型。
有时我得到一个字符串值,也可能得到字符串列表。使用数组的长度我正在做一些其他的操作。
在我的代码中,我正在使用for
执行一些stepData.length
循环函数。这里是我的代码示例
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 :(得分:1)
做一些像:
const _stepData = (typeof stepData === 'string') ? [stepData] : stepData;
然后将其作为数组迭代。更一致,更少的错误。
答案 1 :(得分:1)
你的问题很不清楚,但我猜你要问如何知道stepData
中的值是string
还是string[]
,如果那个案子呢:
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[]
答案 2 :(得分:1)
从您对该问题的评论:
在
for
内部我正在迭代stepData.length
。所以如果它string
只有一次我应该迭代,如果它string[]
我应该找到字符串数组的长度那么多次迭代
在这种情况下,您的代码必须能够在运行时检查string
和string[]
。区分两者的简单检查是typeof stepData === "string"
,true
为string
,false
为string[]
。
if (typeof stepData === "string") {
// here stepData is a string
} else {
// here stepData is a string[]
}
答案 3 :(得分:1)
如果你想知道某个变量是字符串还是字符串[],你可以使用关键字instanceof:
if(stepData instanceof Array<string>) {
...
} else {
...
}
或
if(typeof stepData === "string") {
...
} else {
...
}