Rumah >hujung hadapan web >tutorial js >JavaScript melaksanakan rentetan pencarian yang disusun dalam susunan berbeza dalam petua array_javascript

JavaScript melaksanakan rentetan pencarian yang disusun dalam susunan berbeza dalam petua array_javascript

WBOY
WBOYasal
2016-05-16 16:35:151271semak imbas

Perihalan keperluan: Cari elemen tatasusunan bagi set rentetan yang disusun dalam susunan berbeza daripada set tatasusunan. Katakan terdapat tatasusunan sedemikian:

Salin kod Kod adalah seperti berikut:

[ 'abcd', 'hello', 'bdca', 'olleh', 'cadb', 'nba', 'abn', 'abc' ]

Hasil yang akan ditemui ialah:

Salin kod Kod adalah seperti berikut:

[ 'abcd', 'bdca', 'cadb' ]

Perkara utama di sini ialah untuk menentukan sama ada set rentetan hanya mempunyai susunan aksara yang berbeza Selagi keseluruhan perkara utama diselesaikan, segala-galanya akan mudah dikendalikan.

Kaedah 1:

Salin kod Kod adalah seperti berikut:

var stringClassify = function( arr ){
var arrLength = arr.length,
         obj = {},
i = 0,
            nombor, item, nama, item pertama, strLength;

untuk( ; i < arrLength; i ){
Item = arr[i];
         strLength = item.length;
         bilangan = 0;

                         // Tukar aksara tunggal kepada pengekodan Unikod
// Kira jumlah kod
untuk( j = 0; j < strLength; j ){
              nombor = item.charCodeAt( j );
                                                                  
Jika( !firstItem ){
                1stItem = item;
               obj[num].push(item);
}
// Semak sama ada aksara pertama rentetan yang akan ditambah ialah
// Muncul dalam rentetan lain untuk mengelakkan situasi berikut
// ['ad', 'da', 'bc']
           lain jika( ~firstItem.indexOf(item.charAt(0)) ){
               obj[num].push(item);
}
}

untuk( nama dalam obj ){
console.log( obj[nama] );
}
};

Kaedah 1 merentasi setiap aksara dalam rentetan, kemudian menukar aksara tunggal kepada pengekodan Unikod dan mengira jumlah pengekodan Jumlah pengekodan abcd dan bdca akan konsisten. Akhir sekali, gunakan pengekodan dan kekunci sebagai objek untuk menyimpan pengekodan dan rentetan yang konsisten.

Kaedah 1 Perlu diingat bahawa pengekodan Unikod rentetan "iklan" dan "bc" adalah sama Pada masa ini, pertimbangan tambahan diperlukan untuk mengesan sama ada aksara pertama dalam mana-mana rentetan muncul dalam rentetan yang lain . Ia hanya perlu muncul dalam rentetan.

Kaedah 2:

Salin kod Kod adalah seperti berikut:

var stringClassify = function(){
var arrLength = arr.length,
         obj = {},
i = 0,
nombor, item, nama, strArr, newStr;

untuk( ; i < arrLength; i ){
Item = arr[i];

         strArr = arr[i].split( '' );
        strArr.sort();
newStr = strArr.join( '' );

Jika( !obj[newStr] ){
                obj[ newStr ] = [];
}

         obj[ newStr ].push( item );
}

untuk( nama dalam obj ){
console.log( obj[nama] );
}
};

Kaedah 2 ialah menukar rentetan kepada tatasusunan dan kemudian mengisih tatasusunan dan bdca akan menjadi abcd selepas mengisih sebagai kunci objek untuk menyimpan rentetan dengan pengisihan yang sama.

Malah, prinsip kedua-dua kaedah adalah untuk menukar aksara kepada pengekodan Unikod, tetapi kaedah 1 ialah penukaran eksplisit, manakala isihan yang digunakan dalam kaedah 2 akan ditukar secara tersirat.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn