Javascript Typescript字符串|字符串[]查找数组长度

Javascript Typescript字符串|字符串[]查找数组长度,javascript,arrays,typescript,angular,typescript1.5,Javascript,Arrays,Typescript,Angular,Typescript1.5,我正在查找字符串| string[]的长度,我将变量作为数据类型var stepData:string | string[]。 有时我会得到一个字符串值,也可能得到字符串列表。使用数组的长度,我正在执行其他一些操作。 在我的代码中,我使用stepData.length为循环函数做了一些。下面是我的代码示例 const stepData: string|string[] = this.$stateParams.stepData; // Here two possible length valu

我正在查找字符串| string[]的长度,我将变量作为数据类型
var stepData:string | string[]
。 有时我会得到一个字符串值,也可能得到字符串列表。使用数组的长度,我正在执行其他一些操作。 在我的代码中,我使用
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
     }
 }
const stepData:string | string[]=this.$stateParams.stepData;
//这里是我得到的两个可能的长度值
//如果stepData是字符串[],则获取数组值的长度
//如果stepData是字符串,则获取字符串的长度
//“lengthVar”取决于以下for循环
如果(stepData.length>0){
var lengthVar=stepData.length;
对于(var i=0;i

如何找到
stepData
的确切数组长度我只需要使用内部调用AJAX方法的数组值。如果有人建议我做错了什么,或者给你一些有价值的建议,请。

只需做如下事情:

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

然后将其作为数组进行迭代。更一致,更少bug。

只需执行以下操作:

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

然后将其作为数组进行迭代。更一致,更少错误。

您的问题很不清楚,但我猜您是在问如何知道
stepData
中的值是
字符串还是
字符串[]
,如果是这样的话:

if (typeof stepData === "string") {
    // 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[]

你的问题很不清楚,但我猜你是在问如何知道
stepData
中的值是
字符串还是
字符串[]
,如果是这样的话:

if (typeof stepData === "string") {
    // 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[]

根据您对问题的评论:

for
中,我正在迭代
stepData.length
。所以如果它的
string
只有一次我应该迭代,如果它的
string[]
我应该找到我迭代那么长时间的字符串数组的长度

在这种情况下,您的代码必须能够在运行时通过检查区分
string
string[]
。区分这两者的一个简单检查是
typeof stepData==“string”
,对于
string
s,它将是
true
,而对于
string[]
s,它将是
false

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

根据您对问题的评论:

for
中,我正在迭代
stepData.length
。所以如果它的
string
只有一次我应该迭代,如果它的
string[]
我应该找到我迭代那么长时间的字符串数组的长度

在这种情况下,您的代码必须能够在运行时通过检查区分
string
string[]
。区分这两者的一个简单检查是
typeof stepData==“string”
,对于
string
s,它将是
true
,而对于
string[]
s,它将是
false

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

如果您想知道某个变量是字符串还是字符串[],可以使用关键字instanceof:

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

如果您想知道某个变量是字符串还是字符串[],可以使用关键字instanceof:

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

你想要什么还不是很清楚。是否要在两种可能的
stepData
类型之间进行区分?如果是,怎么做?这是什么
dataId
?请解释你更想要什么。长度有什么问题?这正是您在这两种类型上想要的。我想要的是
stepData
,当它的字符串和它的字符串[]找到数组的长度时,我在内部为loopNo调用AJAX,如果我得到的是
string[]
我得到的是不同的长度,如果
string
我得到的是
stepData
中字符串值的长度。但是,如果值是
string
,那么下面for循环执行了那么多调用的时间。这就是我的问题所在facing@AlexG在
下,对于
循环,如果值为
string
,我只执行数组的长度。它执行的次数越多,在数据库中创建的数据数量就越多,您想要什么还不是很清楚。是否要在两种可能类型的
stepData
?如果是,怎么做?这是什么
dataId
?请解释你更想要什么。长度有什么问题?这正是您在这两种类型上想要的。我想要的是
stepData
,当它的字符串和它的字符串[]找到数组的长度时,我在内部为loopNo调用AJAX,如果我得到的是
string[]
我得到的是不同的长度,如果
string
我得到的是
stepData
中字符串值的长度。但是,如果值是
string
,那么下面for循环执行了那么多调用的时间。这就是我的问题所在facing@AlexG在
下,对于
循环,如果值为
string
,我只执行数组的长度。它的执行次数越多,在数据库中创建的数据就越多,你不能在
string
(或
string
)上使用
instanceof
,检查它是否是
“object”
,因为它可能是很多东西,你不能在
string
(或
string
)上使用
instanceof
,检查是否是
“object”
并不能让他了解很多事情