_.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]]
などの他の関数にも影響します。
ありがとう!
キーは常に文字列です。
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; });
最も参考になるコメント
キーは常に文字列です。
キーが数字であるためではなく、便宜上、キー
'1'
をobj[1]
またはobj['1']
検索できます。キーを数字にしたい場合は、試してみてください