يُرجع _.keys({111: 222, 333: 444})
["111", "333"]
، لكنه يتوقع [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! إرجاع أسماء الخصائص كسلاسل هو جزء من المواصفات . إذا كنت بحاجة إلى أرقام ، فسيعمل حل
آه ، شكرًا على الرد السريع! انت صخرة!!
كنت أستخدم 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']
للتسهيل ، وليس لأن المفتاح هو رقم.إذا كنت تريد المفاتيح كأرقام ، فحاول