2

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

" Informer JavaScript 与“普通”JavaScript
普通 JavaScript 通常嵌入在 HTML 中并由浏览器解释。这意味着“普通”JavaScript 会影响实际呈现的 HTML 文档上的内容。Informer JavaScript 实际上是嵌入并解释的“ -来源:Informer wiki - 专栏

4

1 回答 1

0

将 999999999 等数字转换为字符串时,我没有观察科学记数法转换。

999999999 + ''   // = "999999999"
"999999999" + '' // = "999999999"

如果我是正确的,您想要一个接受999999999or "999999999"or"999-99-9999"并返回的函数"999999999"?作为字符串?

function formatSSN(ssn) {
  return (ssn + '').replace(/[^\d]/g, '');
}

然后,您可以使用它来转换您的数组:

[/* your array */].map(formatSSN);
于 2013-10-25T21:54:54.813 回答