将Javascript对象键转换为字符串

伊丹·谢克特(Idan Shechter)

我有以下Javascript对象。

{min: 0.01, max: 0.02, 29%: 0.03, 31%: 0.04, 32%: 0.05}

如何将其转换为键为字符串的对象。例如:

{'min': 0.01, 'max': 0.02, '29%': 0.03, '31%': 0.04, '32%': 0.05}

我之所以需要这种格式,是因为NoUISlider将其用于自定义值。

手动插入值时,我创建了var range = {}并分配了值,如下所示:

range = [percent + '%'] = some_decimal_value; // percent is an integer

NoUiSlider不接受第一个对象,因此我需要将其转换为键为字符串的对象。

我试过了 range[String(percent + '%')], didn't work.

请参阅“在步骤之间捕捉”对象在此处的显示方式

当我将值或范围变量更改为此时:

range = {
    'min': 0,
    '10%': 50,
    '20%': 100,
    '30%': 150,
    '40%': 500,
    '50%': 800,
    'max': 1000
}

有用。

谢谢。

詹姆斯·唐纳利

这与NoUISlider无关-您当前的对象完全无效。您不能%在对象键名称中包含符号,除非它们首先被用引号引起来。

就目前情况而言,您的JavaScript会引发以下错误:

未捕获到的SyntaxError:意外令牌 %

您在这里唯一可以做的就是首先修改此对象的生成位置-无论如何,您的JavaScript都会在此处引发错误,因此请检查浏览器的JavaScript控制台以了解发生这种情况的位置。


对象在我在代码中初始化时是有效的,因为我可以在检查器中正确看到它,至少以我初始化它的方式类似[percent +'%'] – Idan Shechter 2分钟前

如果是这种情况,则您的对象键已经是字符串形式。在JavaScript中,当您将Number值添加到String值时,它将两个值连接为一个String值:

1 + '%'
-> "1%"

var foo = {};
foo[30 + '%'] = 'bar';
-> Object {30%: "bar"}

JavaScript控制台可能将此显示为30%(不用引号引起来),但是如果我们检查其类型,我们将看到它实际上是一个字符串:

for (var key in foo)
    console.log(typeof key);
-> string

您的问题指出,不使用浮点值进行操作会很好,但是使用浮点值进行操作则不行,所以我认为这里的真正问题可能是在初始化原始对象时使用的是浮点值而不是整数值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章