구글 애드센스가 끊긴지도.... 어언 2주가 되어가네요! 하하 빌어먹게도 멋진 녀석 같으니라고^^7
도움이 되셨다면 광고 한번 클릭해주세요. 블로그 운영에 큰 힘이 됩니다. 감사합니다.
자바스크립트로 데이터를 받아왔는데, 숫자만 출력하고 싶습니다. 어떻게 해야할까요?
let str = "안녕하세요1239입니다.";
str = replaceAll(/[^0-9]/g, "");
로 간단하게 처리가 가능합니다.
사용 방법은 아래와 같습니다.
str.replaceAll(없애고싶은내용, 바꿀내용);
사용 예시를 작성해보겠습니다!
숫자의 데이터가 필요한 상황인데, 애석하게도 숫자만 온게 아니라 문자가 포함된 문자열로 출력되었다는 가정입니다.
function changeLetter (str, successCallback) {
str = str.replaceAll(/[^0-9]/g, "");
successCallback(str); //str을 반환
}
changeLetter("안녕하세요12395", function (ret) { //성공 콜백함수와 데이터
//ret이 변경된 새로운 str이 되는것이죠.
$("#여기에작성해주세요").text(ret); //12395
});
결과적으로, id: 여기에작성해주세요 라는 아이디를 가진 태그의 텍스트에 숫자만 출력되는 내용이 될겁니다.
콘솔창에 작성해본 예시
이렇게 함수로 쓰면 언제든지 함수만 호출해서 꺼내올 수 있게 작성할 수 있습니다!
다만 이것의 문제는 문자열이라는 것에 있죠.
조금 더 나아가서 저 문자열을1)숫자로 변경하고, 2) 뒤에 원을 붙여서 출력하도록 하겠습니다.
function changeLetter (str, successCallback) {
str = str.replaceAll(/[^0-9]/g, "");
successCallback(str);
}
changeLetter("안녕하세요12395", function (ret) { //성공 콜백함수와 데이터
//ret이 변경된 새로운 str이 되는것이죠.
ret = parseInt(ret);
console.log(ret + "원");
});
현재 프로젝트가 Web → Native(React Native) → Web 이기 때문에 내 입맛대로 데이터의 형식을 설정할 수 없기 때문에, 배열로 변환하는 방법 또한 알게되었다.
■ 결론
일단 결과부터 말하자면, 방법은 다음과 같다.
// 배열 형태의 문자열
// (JSON객체형태가 곧바로 string으로 변환되어나온 형태)
let arryStr = "[\"안녕하세요.\",\"안녕히가세요.\"]";
// 문자열 → 배열
arryStr = JSON.parse(arryStr);
console창에서 확인
배열(Array) 인 것을 알 수 있다.
그러나,
typeof(arryStr); //Object
라고 출력된다. (으잉?)
위처럼 사용해도 배열에 대한 모든 기능들은 동작하니 문제는 없을 것이다.
하지만 기분이 찜찜하고 이상하니 조금 더 파고들어가보았다.
■ 부연설명
위에서 얻은 arryStr 을 가지고 새로운 배열에 반복문을 통해 push 해서 type을 해보겠다.
let arryStr = "[\"안녕하세요.\",\"안녕히가세요.\"]";
arryStr = JSON.parse(arryStr);
// ---------------------------------------
let result = []; //새로운 빈 배열 선언
arryStr.forEach( (item, idx) => { //반복문을 통해
result.push(item); //빈배열에 값을 집어넣기
});
console.log(result); //['안녕하세요.', '안녕히가세요.']
console.log(typeof(result)); //object
console.log
????
result 라는 녀석은 배열로 선언해서 배열로 끝났고, 각각의 인덱스도 가지고 있는데, type을 확인해보니 객체(Object)로 출력되어져 있다.
비교대상이 배열인지 여부를 확인하는 메서드를 사용해서 판독해보자.
> Array.isArray() :: 비교대상이 배열이면 true, 아니면 false를 반환하는 메서드.
// 비교 대상 ( ) 안에 있는 대상이 배열이면 true, 아니면 false를 출력한다.
// Array.isArray() 를 통해서 한 번 더 배열인지 여부를 판독
console.log(Array.isArray(arryStr)); //true
console.log(Array.isArray(result2)); //true
왜냐하면, 자바스크립트(JavaScript)에서의 배열(Array)는 배열이 아니라 객체(Object)이기 때문이다. 자세한 내용은 아래의 링크를 참고해주시길 바랍니다.