문자열의 각 개별 문자에 알리고 싶지만 어떻게해야하는지 잘 모르겠습니다.
따라서 내가 가지고 있다면 :
var str = 'This is my string';
나는 T, h, i, s 등을 별도로 경고 할 수 있기를 원합니다. 이것은 제가 작업하고있는 아이디어의 시작일 뿐이지 만 각 문자를 개별적으로 처리하는 방법을 알아야합니다.
jQuery를 사용하고 문자열 길이를 테스트 한 후 split 함수를 사용해야 할 수도 있다고 생각했습니다.
아이디어?
답변
경고 순서가 중요한 경우 다음을 사용하십시오.
for (var i = 0; i < str.length; i++) {
alert(str.charAt(i));
}
경고 순서가 중요하지 않은 경우 다음을 사용하십시오.
var i = str.length;
while (i--) {
alert(str.charAt(i));
}
답변
아마도 해결 된 것 이상입니다. 다른 간단한 솔루션으로 기여하고 싶습니다.
var text = 'uololooo';
// With ES6
[...text].forEach(c => console.log(c))
// With the `of` operator
for (const c of text) {
console.log(c)
}
// With ES5
for (var x = 0, c=''; c = text.charAt(x); x++) {
console.log(c);
}
// ES5 without the for loop:
text.split('').forEach(function(c) {
console.log(c);
});
답변
순수한 자바 스크립트에서 가능한 해결책은 다음과 같습니다.
for (var x = 0; x < str.length; x++)
{
var c = str.charAt(x);
alert(c);
}
답변
각 텍스트를 처리하는 방법 (벤치 마크 포함)
https://jsperf.com/str-for-in-of-foreach-map-2
…에 대한
권위 있는 과 지금까지 가장 성능이 뛰어난 제품 . 성능 결정 알고리즘에서 사용할 계획이거나 브라우저 버전과의 최대 호환성이 필요한 경우이 기능을 사용해야합니다.
for (var i = 0; i < str.length; i++) {
console.info(str[i]);
}
…의
…의 새로운 ES6입니다 반복자를위한 입니다. 대부분의 최신 브라우저에서 지원합니다. 시각적으로 더 매력적이며 실수를 입력하는 경향이 적습니다. 프로덕션 응용 프로그램 에서이 작업을 수행하려는 경우 Babel 과 같은 변환기를 사용해야합니다 .
let result = '';
for (let letter of str) {
result += letter;
}
각각
기능적 접근. 에어 비앤비 승인 . 이 방법으로 수행 할 때의 가장 큰 단점 split()
은, 문자열의 각 개별 문자를 저장할 새 배열을 만듭니다.
왜? 이것은 우리의 불변의 규칙을 강제합니다. 값을 반환하는 순수한 함수를 다루는 것이 부작용보다 추론하기 쉽습니다.
// ES6 version.
let result = '';
str.split('').forEach(letter => {
result += letter;
});
또는
var result = '';
str.split('').forEach(function(letter) {
result += letter;
});
다음은 내가 싫어하는 것입니다.
…에서
for … of와 달리 문자 대신 문자 색인을 얻습니다. 꽤 나쁘게 수행합니다.
var result = '';
for (var letterIndex in str) {
result += str[letterIndex];
}
지도
좋은 기능 접근. 그러나 map은 그 용도로 사용되지 않습니다. 배열 내부의 값을 변경해야 할 때 사용해야하지만, 그렇지 않습니다.
// ES6 version.
var result = '';
str.split('').map(letter => {
result += letter;
});
또는
let result = '';
str.split('').map(function(letter) {
result += letter;
});
답변
유니 코드 BMP (Basic Multilingual Plane) 외부의 문자열에 문자가있을 때마다 문자가 깨질 수 있기 때문에 대부분의 대답이 여기에 해당되지는 않습니다 . 즉, 모든 이모지가 깨질 것입니다 됩니다.
JavaScript는 모든 문자열에 UTF- 16 유니 코드를 사용합니다. UTF-16에서 BMP 이외의 문자는 ” 대리 쌍 “이라는 두 부분으로 구성됩니다. ” 여기에서 대부분의 답변은 해당 쌍의 각 부분을 단일 문자가 아닌 개별적으로 처리합니다.
2016 년 이후 현대 JavaScript에서 한 가지 방법은 새로운 String iterator 를 사용하는 것 입니다. 다음은 MDN에서 나온 예제 (거의)입니다.
var string = 'A\uD835\uDC68B\uD835\uDC69C\uD835\uDC6A';
for (var v of string) {
alert(v);
}
// "A"
// "\uD835\uDC68"
// "B"
// "\uD835\uDC69"
// "C"
// "\uD835\uDC6A"
답변
당신은 이것을 시도 할 수 있습니다
var arrValues = 'This is my string'.split('');
// Loop over each value in the array.
$.each(arrValues, function (intIndex, objValue) {
alert(objValue);
})
답변
하나 더 해결책 …
var strg= 'This is my string';
for(indx in strg){
alert(strg[indx]);
}