我有以下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.
请参阅“步骤”之间的对照'对象应该是here。
当我将值或范围变量更改为:
range = {
'min': 0,
'10%': 50,
'20%': 100,
'30%': 150,
'40%': 500,
'50%': 800,
'max': 1000
}
有效。
感谢。
答案 0 :(得分:1)
您的原始对象首先不能存在:
SyntaxError: Unexpected token '%'. Expected ':' after property name.
所有密钥都是javascript中的自动字符串。
答案 1 :(得分:1)
这与NoUISlider无关 - 您当前的对象无效。您不能在对象键名称中包含%
符号,而不是首先用引号括起来。
目前看来,您的JavaScript会抛出以下错误:
未捕获的SyntaxError:意外的标记
%
这里唯一可以做的就是修改首先生成此对象的位置 - 无论如何,您的JavaScript都会在此处抛出错误,因此请检查浏览器的JavaScript console以了解其发生的位置。
该对象在我在代码中初始化时有效,因为我可以在检查器中正确地看到它,至少在我初始化它的方式如[%+'%'] - Idan Shechter 2 mins ago
如果是这种情况,那么您的对象键已经是字符串形式。在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
您的问题表明,没有浮点值的情况下工作正常,但是使用浮点值执行它不会,所以我认为这里的真正问题可能是您在初始化原始对象时使用浮点值而不是整数值