【发布时间】:2021-02-04 16:09:21
【问题描述】:
我正在尝试从字符串输入值中获取 DataType(?)。
const data = ['1', 'hello', '[]', '{key: [value]}', '`2020-10-08`'];
function funct(data: string): DataType {
if(??) {
return Object
} else if(??) {
return Number
} else if(??) {
return Array
} else if (??) {
return Date
}
return String
}
data.map((d) => console.log(funct(data)));
// Number, String, Array, Object, Data
function funct(d) {
if(d.startsWith('{') && d.endsWith('}')) {
return typeof {}
} else if(d.indexOf('-') !== -1 && !isNaN(Date.parse(d))) {
return 'Date';
} else if(!isNaN(parseFloat(d))) {
return typeof 1
} else if(d.startsWith('[') && d.endsWith(']')) {
return typeof []
} else return typeof 'string'
}
console.log('number', funct('1'));
console.log('number', funct('123'));
console.log('string', funct('`as2d`'));
console.log('string', funct('2s2d'));
console.log('Object', funct('{}'));
console.log('Array', funct('[]')); //object :(
console.log('Array', funct('["d", "f"]')); //object :(
【问题讨论】:
-
这可能太难了
-
如果您不能使用内置解析器 (
eval),您必须创建自己的 JS 解析器,这通常不是一个安全的解决方案。 -
你能举个例子吗?
-
Object.prototype.toString.call(eval('1'))... -
嗯,我想我需要创建自己的 JS 解析器...你能帮我吗?
标签: javascript typescript data-structures