وصف المتطلبات: ابحث عن عنصر صفيف لمجموعة من الأوتار مرتبة في أوامر مختلفة من مجموعة من المصفوفات. إذا كان هناك صفيف مثل هذا:
نسخة الكود كما يلي:
['ABCD' ، 'Hello' ، 'Bdca' ، 'Olleh' ، 'Cadb' ، 'NBA' ، 'ABN' ، 'ABC']
النتائج التي يمكن العثور عليها هي:
نسخة الكود كما يلي:
["ABCD" ، "BDCA" ، "CADB"]
ثم النقطة الأساسية هنا هي تحديد ما إذا كانت مجموعة من الأوتار مجرد ترتيب مختلف من الأحرف. طالما تم حل النقطة الرئيسية بأكملها ، سيكون من الأسهل القيام به.
الطريقة 1:
نسخة الكود كما يلي:
var stringClassify = function (arr) {
var arrlength = arr.length
OBJ = {} ،
أنا = 0 ،
num ، item ، name ، firstItem ، strlength ؛
لـ (؛ i <arrlength ؛ i ++) {
العنصر = arr [i] ؛
strlength = item.length ؛
num = 0 ؛
// تحويل الأحرف المفردة إلى ترميز Unicode
// جلب وحساب الترميز
لـ (j = 0 ؛ j <strlength ؛ j ++) {
num += item.charcodeat (j) ؛
}
if (! firstItem) {
FirstItem = عنصر ؛
OBJ [num] .push (item) ؛
}
// تحقق مما إذا كان الحرف الأول للسلسلة المراد إضافته هو ما إذا كان
// تظهر في سلسلة أخرى لتجنب ما يلي
// ['ad' ، 'da' ، 'bc']
آخر if (~ firstItem.Indexof (item.charat (0))) {
OBJ [num] .push (item) ؛
}
}
لـ (الاسم في OBJ) {
console.log (obj [name]) ؛
}
} ؛
تستخدم الطريقة 1 اجتياز كل حرف في السلسلة ، ثم تحويل حرف واحد إلى ترميز Unicode ، وإجراء ملخص للترميزات. ستكون مبالغ الترميز من ABCD و BDCA متسقة. أخيرًا ، استخدم المفتاح المشفر والمفتاح ككائن لحفظ السلسلة المشفرة والمتسقة.
الطريقة 1 تجدر الإشارة إلى أن ترميز Unicode للسلسلة "AD" و "BC" هو نفسه. في هذا الوقت ، تحتاج إلى إضافة حكم إضافي لاكتشاف ما إذا كانت الحرف الأول في أي سلسلة قد ظهرت في سلسلة أخرى.
الطريقة 2:
نسخة الكود كما يلي:
var stringClassify = function () {
var arrlength = arr.length
OBJ = {} ،
أنا = 0 ،
Num ، item ، name ، Strarr ، NewsTr ؛
لـ (؛ i <arrlength ؛ i ++) {
العنصر = arr [i] ؛
strarr = arr [i] .split ('') ؛
strarr.sort () ؛
newstr = strarr.join ('') ؛
if (! obj [newstr]) {
OBJ [newstr] = [] ؛
}
OBJ [newstr] .push (item) ؛
}
لـ (الاسم في OBJ) {
console.log (obj [name]) ؛
}
} ؛
الطريقة 2 هي تحويل السلسلة إلى صفيف ثم فرز الصفيف. ستصبح ABCD و BDCA ABCD بعد فرزها بالفرز. استخدم السلسلة التي تم تنظيمها جيدًا كمفتاح الكائن لحفظ السلسلة المرتبة باستمرار.
في الواقع ، فإن مبدأ الطريقتين هو تحويل الأحرف إلى ترميز Unicode. ومع ذلك ، فإن الطريقة 1 هي تحويل صريح ، في حين سيتم تحويل الفرز المستخدم في الطريقة 2 ضمنيًا.