在将一组混合的对象类型转换为字符串时,javascript中是否有一种方法可以确保纯数字到字符串的转换(非科学记数法)?
我正在编写javascript函数来格式化社会安全号码的预先存在的数据。我无法解决的问题是将数字数组(长度为9位)转换为字符串数组。当我使用以下功能时:
function arrayTo1d(arr){
/*
Returns a 1D array of strings from the given array
*/
try {
return arr.join().split(",");
} catch (err) {
return ["Datatype Error"];
}
}
它以科学记数法给出一组字符串,如:1.23456789E8
我需要将数字作为原始显示的字符串:123456789
要添加问题,数组元素有时是字符串,数字或对象的混合,因此toString()
,或者在这种情况下,join().split(",")
是“全能”修复。当一个数组包含一个字符串'123-45-6789'
和一个数字123456789
时,上面的函数应该将所有内容合并到一个字符串数组中,而不管单个元素类型如何,给出[...,'123-45-6789','123456789']
而是我得到[...,'123-45-6789','1.23456789E8']
。
附加说明:
Object.prototype.toString.call(ssnObj).slice(8,-1);
返回'JavaArray'
和
Object.prototype.toString.call(ssnObj[0]).slice(8,-1);
返回'JavaObject'
编辑:
我正在使用Informer JavaScript,它由Java内部解释。看来,由于这个原因,我得到了科学记数法,而在node.js中,我没有得到符号。引自Informer's wiki:
“线人JavaScript与”正常“JavaScript
普通JavaScript通常嵌入在HTML中,并由浏览器解释。这意味着“普通”JavaScript可以影响呈现的实际HTML文档上的内容。 Informer JavaScript实际上嵌入在Informer Java应用程序中并由其解释。解释后,结果将传递给浏览器。这意味着Informer JavaScript不会影响在浏览器中查看的HTML文档。但是,它可以执行JavaScript可以执行的所有其他操作。“ - source: Informer wiki - Columns
答案 0 :(得分:0)
将999999999之类的数字转换为字符串时,我没有观察科学记数法转换。
999999999 + '' // = "999999999"
"999999999" + '' // = "999999999"
如果我是正确的,您希望功能需要999999999
或"999999999"
或"999-99-9999"
并返回"999999999"
?作为一个字符串?
function formatSSN(ssn) {
return (ssn + '').replace(/[^\d]/g, '');
}
然后您可以使用它来转换数组:
[/* your array */].map(formatSSN);