요구 사항 설명 : 배열 세트와 다른 순서로 배열 된 문자열 세트의 배열 요소를 찾으십시오. 다음과 같은 배열이있는 경우 :
코드 사본은 다음과 같습니다.
[ 'abcd', 'hello', 'bdca', 'olleh', 'cadb', 'nba', 'abn', 'abc']]]
찾을 수있는 결과는 다음과 같습니다.
코드 사본은 다음과 같습니다.
[ 'abcd', 'bdca', 'cadb']
그런 다음 여기서 핵심 요점은 문자열 세트가 다른 문자 순서인지 여부를 결정하는 것입니다. 전체 핵심 지점이 해결되는 한 더 쉽게 수행 할 수 있습니다.
방법 1 : 방법 1
코드 사본은 다음과 같습니다.
var StringClassify = function (arr) {
var arrlength = arr.length,
obj = {},
i = 0,
num, 항목, 이름, firstIm, strlength;
for (; i <arrlength; i ++) {
항목 = ARR [i];
Strlength = item.length;
num = 0;
// 단일 문자를 유니 코드 인코딩으로 변환합니다
// 인코딩을 가져 와서 계산합니다
for (j = 0; j <strlength; j ++) {
num += item.charcodeat (j);
}
if (! firstEM) {
firstItem = 항목;
obj [num] .push (항목);
}
// 추가 될 문자열의 첫 번째 문자가
// 다음을 피하기 위해 다른 문자열로 나타납니다
// [ 'ad', 'da', 'bc']
else if (~ firstItem.indexof (item.charat (0))) {
obj [num] .push (항목);
}
}
for (obj의 이름) {
console.log (obj [name]);
}
};
방법 1은 문자열에서 각 문자를 가로 지르는 다음 단일 문자를 유니 코드 인코딩으로 변환하고 인코딩의 요약을 수행합니다. ABCD 및 BDCA의 인코딩 합은 일관되게됩니다. 마지막으로 인코딩 된 및 일관된 문자열을 저장하기 위해 인코딩 된 및 키를 객체로 사용하십시오.
방법 1 문자열 "AD"및 "BC"의 유니 코드 인코딩은 동일하다는 점에 유의해야합니다. 현재 문자열의 첫 번째 문자가 다른 문자열에 나타 났는지 여부를 감지하기 위해 추가 판단을 추가해야합니다.
방법 2 : 방법 2.
코드 사본은 다음과 같습니다.
var StringClassify = function () {
var arrlength = arr.length,
obj = {},
i = 0,
Num, 항목, 이름, Strarr, Newstr;
for (; i <arrlength; i ++) {
항목 = ARR [i];
strarr = arr [i] .split ( '');
strarr.sort ();
newstr = strarr.join ( '');
if (! obj [newst]) {
obj [Newstr] = [];
}
obj [Newstr] .push (항목);
}
for (obj의 이름) {
console.log (obj [name]);
}
};
방법 2는 문자열을 배열로 변환 한 다음 배열을 정렬하는 것입니다. ABCD와 BDCA는 정렬로 정렬 한 후 ABCD가됩니다. 일관되게 정렬 된 문자열을 저장하려면 잘 정리 된 문자열을 객체의 키로 사용하십시오.
실제로, 두 가지 방법의 원칙은 문자를 유니 코드 인코딩으로 변환하는 것입니다. 그러나, 방법 1은 명시적인 변환이며, 방법 2에 사용 된 정렬 정렬은 암시 적으로 변환됩니다.