打字稿字符串| string []找到数组长度

时间:2016-07-05 19:25:17

标签: javascript arrays typescript angular typescript1.5

我找到了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方法的数组值。如果有任何建议我正在尝试任何错误或请给出您宝贵的建议。

4 个答案:

答案 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[]我应该找到字符串数组的长度那么多次迭代

在这种情况下,您的代码必须能够在运行时检查stringstring[]。区分两者的简单检查是typeof stepData === "string"truestringfalsestring[]

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 {
...
}