2016-07-05 257 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

你是对的! 感谢您的建议! –