JavaScript toString或加入长数组(SSN)

时间:2013-10-25 21:45:37

标签: javascript arrays string string-formatting

在将一组混合的对象类型转换为字符串时,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

1 个答案:

答案 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);