Underscore: _.keys يعود دائما السلاسل

تم إنشاؤها على ٦ فبراير ٢٠١٣  ·  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

يمكنك البحث عن المفتاح '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! إرجاع أسماء الخصائص كسلاسل هو جزء من المواصفات . إذا كنت بحاجة إلى أرقام ، فسيعمل حل

آه ، شكرًا على الرد السريع! انت صخرة!!
كنت أستخدم parseInt(number, 10) لكن استخدام Number أكثر نظافة ؛)

شكرا لك مرة أخرى!

لن يعمل حل caseywebdev عندما يكون لديك كائنات رئيسية مختلطة. مثل {"asdf": 123، 1: 1234} أدرك أنك قلت "معظم" الحالات ، كنت أشير فقط إلى الوقت الذي لن ينجح فيه الأمر.

johnymonster بمفاتيح مختلطة ، يمكن تعديله إلى

_.map(_.keys(obj), function (key) { return isNaN(+key) ? key : +key; });
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات