Underscore: _.keys 总是返回字符串

创建于 2013-02-06  ·  5评论  ·  资料来源: jashkenas/underscore

_.keys({111: 222, 333: 444})返回["111", "333"] ,但预期[111, 333]
还会影响其他函数,例如 _.pairs: _.pairs({1: 1})`returns`[["1", 1]]`, but expected`[[1, 1]]

谢谢!

invalid

最有用的评论

键总是字符串。

var obj = {};
obj[1] = 1;
for (var key in obj) console.log(typeof key); // string

为方便起见,您可以使用obj[1]obj['1']查找键'1' ,而不是因为键是数字。

如果您希望将键作为数字,请尝试

var obj = {};
obj[1] = 1;
_.map(_.keys(obj), Number);

所有5条评论

键总是字符串。

var obj = {};
obj[1] = 1;
for (var key in obj) console.log(typeof key); // string

为方便起见,您可以使用obj[1]obj['1']查找键'1' ,而不是因为键是数字。

如果您希望将键作为数字,请尝试

var obj = {};
obj[1] = 1;
_.map(_.keys(obj), Number);

嗨@mar​​calj! 将属性名称作为字符串返回是规范的一部分。 如果您需要数字, @caseywebdev上面的解决方案适用于大多数情况。

哦,明白了,感谢您的快速回复! 你摇滚!!
我使用的是parseInt(number, 10)但使用Number更干净;)

再次感谢!

当您混合了关键对象时, @caseywebdev解决方案将不起作用。 例如 {"asdf":123, 1:1234} 我确实意识到您说的是“大多数”情况,我只是指出它何时不起作用。

@johnymonster带有混合键,可以修改为

_.map(_.keys(obj), function (key) { return isNaN(+key) ? key : +key; });
此页面是否有帮助?
0 / 5 - 0 等级

相关问题

arypbatista picture arypbatista  ·  3评论

arieljake picture arieljake  ·  4评论

haggholm picture haggholm  ·  8评论

chikamichi picture chikamichi  ·  8评论

umarfarooq125 picture umarfarooq125  ·  8评论