Underscore: 常に文字列を返す_.keys

作成日 2013年02月06日  ·  5コメント  ·  ソース: jashkenas/underscore

_.keys({111: 222, 333: 444})["111", "333"] _.keys({111: 222, 333: 444})返しますが、 [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

キーが数字であるためではなく、便宜上、キー'1'obj[1]またはobj['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

キーが数字であるためではなく、便宜上、キー'1'obj[1]またはobj['1']検索できます。

キーを数字にしたい場合は、試してみてください

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

こんにちは@marcalj! プロパティ名を文字列として返すことは仕様の一部です。 数字が必要な場合は、上記の@caseywebdevのソリューションがほとんどの場合に機能します。

わかりました、迅速な対応に感謝します! あなたはロック!
私はparseInt(number, 10)を使用していましたが、 Numberを使用する方がクリーンです;)

再度、感謝します!

キーオブジェクトが混在している場合、 @ caseywebdevソリューションは機能しません。 {"asdf":123、1:1234}など}「ほとんどの」ケースについておっしゃっていたと思いますが、うまくいかない場合は指摘していました。

混合キーを持つ@johnymonster 、それはに変更することができます

_.map(_.keys(obj), function (key) { return isNaN(+key) ? key : +key; });
このページは役に立ちましたか?
0 / 5 - 0 評価