JSON 배열 읽기 가독성 높이기

개발 및 관리/Javascript 2023. 11. 22. 18:56 posted by HighLighter
반응형

// JSON 배열

// [1]: 자바스크립트 배열과 거의 동일
let dataObj = {
"name":"홍길동",
"age":10,
"hobby":[
"음악감상",
"영화보기",
"산책",
{
"key1":"value1",
"key2":"value2"
}
]
};


// JSON space 옵션을 통한 가독성 높이기

// [1] : space 옵션 --> 가독성 up
let someJsonData = {"num":10, firstNumber:12345, secondNumber:678910,thirdNumber: 7891011, fourthNumber: 89101112};

console.log(someJsonData);

// [2] : 변환 --> space 옵션 없이
console.log(JSON.stringify(someJsonData));

// [3] : 변환 --> space 옵션 사용
console.log(JSON.stringify(someJsonData, null, 2));
console.log(JSON.stringify(someJsonData, null, 'Wt'));

반응형

'개발 및 관리 > Javascript' 카테고리의 다른 글

메소드 체이닝, Method Chaining  (1) 2023.11.23
JSON replacer 옵션  (2) 2023.11.22
JSON 배열  (0) 2023.11.22
JSON.stringify 사용  (1) 2023.11.21
map 메서드, reduce 메서드  (0) 2023.11.21

JSON 배열

개발 및 관리/Javascript 2023. 11. 22. 12:42 posted by HighLighter
반응형

// JSON 배열

// [1]: 자바스크립트 배열과 거의 동일
let dataObj = {
"name":"홍길동",
"age":10,
"location":["서울", "인천", "경기", "부산", "대전", "대구"]
};


// [2]: 접근
let myObj = dataObj.location[1];
alert(myObj); // 인천


// [3]: 반복
let i, rst = "";
for(i=0 ; i<dataObj.location.length;i++){
rst += dataObj.location[i] + ", ";
}

console.log(rst); // 서울, 인천, 경기, 부산, 대전, 대구, 


// [4]: 수정, 삭제
dataObj.location[2] = "경북"; // 수정  ['서울', '인천', '경북', '부산', '대전', '대구']
delete dataObj.location[2];   // 삭제 -->  ['서울', '인천', 비어 있음, '부산', '대전', '대구']

console.log(dataObj);

// [5]: 반복 --> for in
let i, rst = "";
for(i in dataObj.location) {
rst += dataObj.location[i] + ", ";
}

console.log(rst); // 서울, 인천, 경기, 부산, 대전, 대구,


반응형

JSON.stringify 사용

개발 및 관리/Javascript 2023. 11. 21. 23:03 posted by HighLighter
반응형

// JSON 형식의 텍스트로 변환시 안되는 것들
// JSON.stringify 호출 시 --> 무시되는 프로퍼티들

// [1] 
// 객체, 배열 --> O
// 함수, 심벌(프로퍼티가), undefined(값이) --> X

// [1] : JSON.stringify 메소드를 사용할 수 있는 자료형
// 원시형 --> 문자형, 숫자형, Boolean형(true, false), 객체, 배열

alert(JSON.stringify(100)); // 100
alert(JSON.stringify('Korea')); // 홀따옴표가 쌍따옴표로 변경 --> "Korea"
alert(JSON.stringify(false)); // false
alert(JSON.stringify([1, 2, 3])); // [1, 2, 3]

// [2] : 객체, 배열 --> O
let arr = ['홍길동', '이순신', '강감찬', '을지문덕'];
let jsonArr = JSON.stringify(arr);

console.log(jsonArr);

// [3] : 함수 --> X
let obj = {name:"홍길동", age:function() { return 10;},nationality:"Korea"};
let jsonText = JSON.stringify(obj);
console.log(jsonText);

// [4] 함수 --> X --> O
let obj2 = {name:"홍길동", age:function() { return 10;},nationality:"Korea"};
obj2.age = obj2.age.toString();

let jsonText2 = JSON.stringify(obj2);
console.log(jsonText2);

// [5] : undefined , Symbol --> X
const obj3 = {
name:"마이클",
age:10,
nationality:undefined
};

console.log(JSON.stringify(obj3));

alert("값이 undefined ==>" + JSON.stringify(undefined));  // undefined
alert("심볼인 경우 ==>" + JSON.stringify(Symbol('')));  // undefined

[6] : array --> null
console.log(JSON.stringify([function() { return 10;}, undefined, Symbol(''), NaN ]));  // null, null, null, null

반응형

map 메서드, reduce 메서드

개발 및 관리/Javascript 2023. 11. 21. 22:32 posted by HighLighter
반응형

// map() 메서드

// [1]: map() 메서드란 무엇인가?
// 배열내 요소를 반복하면서 1 vs 1로 매핑지어 주는 것
// Mapping --> 하나의 값을 다른 값으로 1 vs 1 로 매핑시키는 것
// http://www.naver.com --> IP 주소

// [2-1] : 예
const testAr = [1, 2, 3, 4, 5];

const testAr2 = testAr.map(function(val) {

// 할 일 처리 --> return
return val * 10;
});

console.log(testAr2); // 10, 20, 30, 40, 50

---------------------------------------------------------------------------------------------------------

// [2-2] : Arrow Function
const testAr = [1, 2, 3, 4, 5];
const testAr2 = testAr.map(v=>v*10);

console.log(testAr);
console.log(testAr2); // 10, 20, 30, 40, 50 
console.log(testAr); 

---------------------------------------------------------------------------------------------------------

// [2-3] : 짝수, 홀수

const testAr = [1, 2, 3, 4, 5];

const testAr2 = testAr.map(val=>{

// 할 일 처리 --> return
if(val % 2)
  return 'Odd Number';

return 'Even Number';
});

console.log('원본 배열 : ' + testAr);
console.log('새로운 배열 : ' + testAr2); 
console.log('원본 배열 : ' + testAr);

console.log(testAr === testAr2); // false --> 맵은 원본 배열을 건드리지 않고 새로운 배열을 생성

console.log(Boolean(0)); // false
console.log(Boolean(1)); // true

---------------------------------------------------------------------------------------------------------

// map()메서드 활용 --> 배열내 객체를 원하는 형태로 바꾸기

// [1] : 주어진 형태
const testAr = [

{key:'홍길동', value:10},
{key:'이순신', value:20},
{key:'강감찬', value:30},
{key:'을지문덕', value:40}
];

// [2] : 바꾸기 --> {홍길동 : 80}
const changeNewAr = testAr.map(obj=>{

//할 일 처리 --> return
let newObj = {};
newObj[obj.key] = obj.value;
return newObj;
});

console.log(testAr);
console.log(changeNewAr);
console.log(changeNewAr[0].홍길동); // 10

---------------------------------------------------------------------------------------------------------

// map() 메서드 활용 --> 특정 문자열을 배열과 객체로 변환(구조 분해 할당)

// [1] : 문자열 --> 배열로 --> 객체로 변환
// 이때 --> 최종 객체로 변환시 배열 요소내의 값들 중에서 --> 숫자만 판별해서 변환

// [2] : 실습
// 문자열
const someStr = "홍길동 10, 이순신 20, 강감찬 30, 김유신 40, 을지문덕 50";

// 배열로 만들기
const frag = someStr.split(', ');
// console.log(frag);

// 객체로 만들기
// const dataObj = {};

// 반복 --> map() --> 콜백함수 내에서 처리한 결과를 1 vs 1 매핑해서 배열로 return --> 결과 변수를 만들어 받음
const result = frag.map(val=>{
let [k, v] = val.split(' ');
  return {k, v};
});

// 출력
console.log(result);

---------------------------------------------------------------------------------------------------------

// [2] : 실습
// 문자열
const someStr = "홍길동 10, 이순신 20, 강감찬 30, 김유신 40, 을지문덕 50";

// 배열로 만들기
const frag = someStr.split(', ');

// 반복 --> map() --> 콜백함수 내에서 처리한 결과를 1 vs 1 매핑해서 배열로 return --> 결과 변수를 만들어 받음
const result = frag.map(val=>{
let [k, v] = val.split(' ');
  return {k, v:Number.isNaN(Number(v)) ? v : Number(v)};
});

// 출력
console.log(result);

// 문자열 --> frag(원본배열) --> map() --> 객체의 형태 --> 우리가 원하는 형태X --> 우리가 원하는 객체의 형태({홍길동:10})

// 원하는 형태의 객체로 바꾸기
const result2 = result.map(obj=>{

// 할 일 처리 --> return
let newObj = {};
newObj[obj.k] = obj.v;
return newObj;
});

console.log(result2);

---------------------------------------------------------------------------------------------------------


// map()메서드와 reduce() 메서드 동시 활용 --> 특정 문자열을 배열과 객체로 변환

// [1] : 문자열 --> 배열로 --> 객체로 변환
// 이때 --> map() 메서드와 reduce() 메서드를 함께 사용이 가능(Method Chaining)

const someStr = "홍길동 10, 이순신 20, 강감찬 30, 김유신 40, 을지문덕 50";

// 배열로 만들기
const frag = someStr.split(', ');

// 반복 --> map() --> reduce()

const result = frag.map(val=>{

// 할 일 처리 --> return
let [k, v] = val.split(' ');
return {k, v:Number.isNaN(Number(v)) ? v : Number(v)};

});

const resutl2 = result.reduce((acc, obj) => {

// 할 일 처리 --> return
acc[obj.k] = obj;
return acc;
}, {});

console.log(result);
console.log('---------------------------------------------------------------------------------------------------------');
console.log(result2);


---------------------------------------------------------------------------------------------------------

반응형

'개발 및 관리 > Javascript' 카테고리의 다른 글

JSON 배열  (0) 2023.11.22
JSON.stringify 사용  (1) 2023.11.21
특정 문자열을 배열과 객체로 변환하기, for문  (0) 2023.11.20
isNan() vs Number.isNaN() 비교  (0) 2023.11.18
find, filter  (0) 2023.11.18
반응형


// 특정 문자열을 배열과 객체로 변환하기  - Number.isNaN() 사용해서 숫자 판별

//[1]: 문자열 -> 배열로 -> 객체로 변환
// 이때 --> 최종 객체로 변환시 배열 소요내의 값들 중에서 --> 숫자만 판별해서 변환.

//[2]: 실습
// 문자열
const someStr = "홍길동 10, 이순신 20, 강감찬 30, 김유신 40, 을지문덕 50";

// 배열로 만들기 --> split()
const frag = someStr.split(", ");
console.log(frag);

// 객체로 만들기
const dataObj = [];

// 반복 --> 전통적인 방식
for(let i=0; i < frag.length; i++) {

// 각각의 피스로 쪼개기 --> 역시 배열
  let piece = frag[i].split(" "); // "홍길동 10"
console.log(piece[0], typeof piece[0]); // 홍길동, string
console.log(piece[1], typeof piece[1]); // 10, string
}

-------------------------------------------------------------------------------------------------------------------

const someStr = "홍길동 10, 이순신 20, 강감찬 30, 김유신 40, 을지문덕 50";
const frag = someStr.split(", ");

// 객체로 만들기
const dataObj = [];

for(let i=0; i < frag.length; i++) {

// 각각의 피스로 쪼개기 --> 역시 배열
  let piece = frag[i].split(" "); // "홍길동 10"
// console.log(piece[0], typeof piece[0]); // 홍길동, string
// console.log(piece[1], typeof piece[1]); // 10, string
let key = piece[0];
// let value = piece[1];
// console.log(typeof value); // string

// if조건문을 사용하여 piece[1] 요소가 숫자인지를 판별하여 value 값에 세팅 --> Number.isNaN() 사용
let value;
if(!Number.isNaN(Number(piece[1]))) {
value = Number(piece[1]);

else {
value = piece[1];
}

dataObj[key] = value;
}

console.log(dataObj);
console.log(dataObj.강감찬);
console.log(typeof dataObj.강감찬);


-------------------------------------------------------------------------------------------------------------------

const someStr = "홍길동 10, 이순신 20, 강감찬 30, 김유신 40, 을지문덕 50";
const frag = someStr.split(", ");

// 객체로 만들기
const dataObj = [];

for(let i=0; i < frag.length; i++) {

// 각각의 피스로 쪼개기 --> 역시 배열
  let piece = frag[i].split(" "); // "홍길동 10"
let key = piece[0];

// if조건문 --> 한줄로 작성 --> 삼항 연산자
let value = Number.isNaN(Number(piece[1])) ? piece[1]: Number(piece[1]);

dataObj[key] = value;
}

console.log(dataObj);
console.log(dataObj.강감찬); // 30 
console.log(typeof dataObj.강감찬); // number

------------------------------------------------------------------------------------------------------------------- 

// 배열로 만들기 
const someStr = "홍길동 10, 이순신 20, 강감찬 30, 김유신 40, 을지문덕 50";
const frag = someStr.split(', ');
console.log(frag); 

// 객체로 만들기 
const dataObj = [];

// 객체로 만들기
// 반복 --> forEach() 메서드 사용 --> forEach(val[, idx])
frag.forEach(function(val) {

// 할 일 처리 --> return
// 피스별로 각각 쪼개기
let piece = val.split(" ");

// key, value 변수에 담기
let key = piece[0];

// 숫자 판별 --> Number.isNaN()
let value = Number.isNaN(Number(piece[1])) ? piece[1]:Number(piece[1]);

// 객체의 key:value 로 세팅
dataObj[key] = value;
console.log(key, value);
});

------------------------------------------------------------------------------------------------------------------- 

// 배열로 만들기 
const someStr = "홍길동 10, 이순신 20, 강감찬 30, 김유신 40, 을지문덕 50";
const frag = someStr.split(', ');
console.log(frag); 

// 객체로 만들기 
const dataObj = [];

// 객체로 만들기
// 반복 --> forEach() 메서드 사용 --> 화살표 함수 + 구조 분해 할당
frag.forEach(val=> {
let [key, value] = val.split(" ");
value = Number.isNaN(Number(value)) ? value:Number(value); // let 변수 선언해줬으므로 let value 하면 안됨
dataObj[key] = value;
});

// 출력
console.log(dataObj); 
console.log(dataObj.강감찬); // 30  
console.log(typeof dataObj.강감찬); // number










반응형

'개발 및 관리 > Javascript' 카테고리의 다른 글

JSON.stringify 사용  (1) 2023.11.21
map 메서드, reduce 메서드  (0) 2023.11.21
isNan() vs Number.isNaN() 비교  (0) 2023.11.18
find, filter  (0) 2023.11.18
include, join, reverse  (0) 2023.11.18

isNan() vs Number.isNaN() 비교

개발 및 관리/Javascript 2023. 11. 18. 20:58 posted by HighLighter
반응형

//isNan() vs Number.isNaN() 비교
//생각보다 혼돈이 발생하는 영역 

// [!] : 이것은 꼭 기억하자
// isNaN()
// 어떤 값이 숫자인지 아닌지를 판별할 경우 많이 사용
// 예를 들어, 숫자 계산시 문자가 삽입되면 NaN 상태가 되는데, 출력 전에 NaN이지 아닌지를 확인
// 숫자면 false 반환 --> 숫자가 아니면(예를 들면 문자열) true --> 조금 직관적이지 못 함 --> ! 붙여서 사용하는게 더 직관적
// NaN(Not a Number)도 타입이다. --> Number

console.log('-------------------------------------------------- NaN 타입');
console.log('NaN의 타입은 = ' + typeof NaN); // number;

// Number.isNaN()
// ES6에 추가 --> 기존(isNaN or global isNaN)의 문제점을 해결하고자 추가
// 전역은 아님. 오래된 구 브라우저(EI) 등에서는 지원이 안됨 --> 필요한 경우 폴리폴을 사용해서 지원하는 것은 가능
// 기능 --> 주어진 인자가 NaN인지만을 판별 --> Only 숫자형에서만
// 즉,
// isNaN() --> 인자가 숫자인지 아닌지의 여부를 Boolean 값으로 반환
// Number.isNaN() --> 인자가 NaN인지 아닌지의 여부만을 Boolean 값으로 반환

console.log('-------------------------------------------------- isNaN 테스트');
let a = 'NaN';
let b = NaN;
let c = '홍길동';
let d = '10';
let e = null;

console.log(isNaN(a)); //true
console.log(isNaN(b)); //true
console.log(isNaN(c)); //true
console.log(isNaN(d)); //false
console.log(isNaN(e)); //false

console.log(Number.isNaN(a)); //false
console.log(Number.isNaN(b)); //true
console.log(Number.isNaN(c)); //false
console.log(Number.isNaN(d)); //false
console.log(Number.isNaN(e)); //false

// [1]: 기본 사용법
console.log('-------------------------------------------------- isNaN 기본');
console.log(isNaN(10)); // false
console.log(isNaN(10.0)); // false
console.log(isNaN("홍길동")); // true

// [2]: ! 붙이는 것이 더 직관적
console.log(!isNaN(10));        // true
console.log(!isNaN(10.0));      // true
console.log(!isNaN("홍길동")); // false

// [3]: 조금 이상한 경우
console.log('-------------------------------------------------- 조금 이상한 경우');
console.log('isNaN("100") = ' + isNaN("100"));      // false
console.log('isNaN("10.0") = ' + isNaN("10.0"));     // false
console.log('홍길동 = ' + isNaN("홍길동"));   // true
console.log('이순신 = ' + isNaN("이순신"));   // true

console.log('-------------------------------------------------- 조금 이상한 경우');
console.log(isNaN("2 * 3"));  // true --> 연산기호(+, - , *, /)는 따옴표내에서 문자 처리 --> true
console.log(isNaN("2 + 3")); // true
console.log(isNaN("2 - 3")); // true
console.log(isNaN("2 / 3")); // true
console.log(isNaN("0 / 0")); // true
console.log(Number("0/0")); // NaN

console.log(Number(2*3)); // 6 
console.log(Number(0/0)); // NaN

// [4]: 아주 이상한 경우
console.log('-------------------------------------------------- 아주 이상한 경우');
console.log('isNaN(null) = ' + isNaN(null)); // false
console.log('isNaN(true) = ' + isNaN(true)); // false
console.log('isNaN(false) = ' + isNaN(false)); // false
console.log('isNaN("") = ' + isNaN("")); // false
console.log('Number(undefined) = ' + Number(undefined));  // NaN
console.log('Number(NaN) = ' + Number(NaN)); // NaN

// [5]: Number 객체로 출력
console.log('-------------------------------------------------- Number 객체로 출력');
console.log(Number(null)); // 0
console.log(Number(" ")); // 0
console.log(Number("10")); // 10
console.log(Number("10px")); // NaN
console.log(Number(true)); // 1
console.log(Number(false)); // 0
console.log(Number(undefined)); // NaN
console.log(Number(NaN)); // NaN

// 알 수 있는 것
// 1. 단순히 숫자가 아니라해서 true가 나올 것이라 생각하면 안된다.
// 2. 넘어온 인자를 숫자로 변환 후 --> NaN 여부를 확인 --> isNaN(Number("10px"));
// 3. 설명을 들어야 알지, 혼자 공부하면 정말로 이해 어렵다.

// [6]: Number.isNaN()
// 오직 숫자(Number) 타입인 값에서만 사용(동작)하는 메서드
// 강제로 인자로 넘어온 매개변수 값을 숫자로의 변환을 시도하지 않음
// 언제 true를 리턴하는가? --> 오직 숫자(Number)이고, 그 값이 NaN인 경우에만 true를 반환

console.clear();
console.log('-------------------------------------------------- 1');
console.log(isNaN("10")); // false
console.log(Number.isNaN("10")); // false
console.log(Number.isNaN(Number("10"))); // false

console.log('-------------------------------------------------- 2');
console.log(isNaN("10px")); // true
console.log(Number.isNaN("10px")); // false --> Number.isNaN() 메서드는 숫자형에서만 사용 가능
console.log(Number.isNaN(Number("10px"))); // true

// [7]: isNaN() vs Number.isNaN() 연습문제
console.clear();
console.log('-------------------------------------------------- isNaN()');
console.log('isNaN("NaN") = ' + isNaN("NaN")); // true
console.log('isNaN(NaN) = ' + isNaN(NaN)); // true
console.log('isNaN("0/0") = ' + isNaN("0 / 0")); // true
console.log('isNaN(0/0) = ' + isNaN(0 / 0)); // true
console.log('isNaN("홍길동") = ' + isNaN("홍길동")); // true
console.log('isNaN(undefined) = ' + isNaN(undefined)); // true
console.log('isNaN("100") = ' + isNaN("100")); // false *****
console.log('isNaN("100px") = ' + isNaN("100px")); // true

console.log('-------------------------------------------------- Number.isNaN()');
console.log('Number.isNaN("NaN") = ' + Number.isNaN("NaN")); // false
console.log('Number.isNaN(NaN) = ' + Number.isNaN(NaN)); // true *****
console.log('Number.isNaN("0/0") = ' + Number.isNaN("0 / 0")); // false
console.log('Number.isNaN(0/0) = ' + Number.isNaN(0 / 0)); // true *****
console.log('Number.isNaN("홍길동") = ' + Number.isNaN("홍길동")); // false
console.log('Number.isNaN(undefined) = ' + Number.isNaN(undefined)); // false
console.log('Number.isNaN("100") = ' + Number.isNaN("100")); // false
console.log('Number.isNaN("100px") = ' + Number.isNaN("100px")); // false


console.log('-------------------------------------------------- Number.isNaN(Number())');
console.log(Number.isNaN(Number("NaN"))); // true
console.log(Number.isNaN(Number(NaN))); // true
console.log(Number.isNaN(Number("0 / 0"))); // true
console.log(Number.isNaN(Number(0 / 0))); // true
console.log(Number.isNaN(Number("홍길동"))); // true
console.log(Number.isNaN(Number(undefined))); // true
console.log(Number.isNaN(Number("100"))); // false
console.log(Number.isNaN(Number("100px"))); // true

console.log('-------------------------------------------------- END');
console.clear();
console.log(Number.isNaN(Number("홍길동"))); // true
console.log(Number.isNaN(Number("20"))); // flase


반응형

'개발 및 관리 > Javascript' 카테고리의 다른 글

map 메서드, reduce 메서드  (0) 2023.11.21
특정 문자열을 배열과 객체로 변환하기, for문  (0) 2023.11.20
find, filter  (0) 2023.11.18
include, join, reverse  (0) 2023.11.18
숫자, 문자 찾기  (0) 2023.11.18

find, filter

개발 및 관리/Javascript 2023. 11. 18. 18:51 posted by HighLighter
반응형

//[19]: 조건에 맞는 첫번째 요소 찾기 --> fid() --> 명세서 --> 콜백함수 사용
const testAr19  = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
console.log(testAr19);

//find() 메서드는 조건에 만족하는 첫 번째 요소의 값을 반환 --> 결과가 없다면 undefined 반환
const found = testAr19.find(function(element) {

//할 일 처리 ---> return
return element >= 71;
});

console.log(found); // 80 --> 주의해서 결과값 확인해야 함


const found2 = testAr19.find(function(element) {

//할 일 처리 ---> return
return element >= 101;
});

console.log(found2); // undefined --> 주의해서 결과값 확인해야 함

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

//find() vs filter() 비교(차이점)
//find() 메서드  --> 찾는 즉시 첫 번째 요소의 값을 반환. 더 이상 순회하지 않음(X)
//filter() 메서드 --> 계속 순회함 --> 조건에 맞는 값을 다 찾아 줌

const testAr20  = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 50];
let arData_loop_count = 0;

//반복횟수
const rst1 = testAr20.filter(ele => {

//할 일 처리 --> return
arData_loop_count++;
return ele == 50;
});

console.log("해당 메서드의 반복 횟수는 = " + arData_loop_count); // 11
console.log(rst1);  // [50, 50]
console.log(typeof rst1); //object

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

//[20]: 객체를 담고 있는 배열에서 특정 객체 찾기 --> find()

const cars = [
{name: 'Tesla', price: 50000},
{name: 'Benz', price: 80000},
{name: 'BMW', price: 70000},
{name: 'Audi', price: 60000}
];

console.log('-----------------------------------------------------find() - 콜백함수 외부에');

//콜백함수 외부에
function searchValue1(car) {
return car.name === 'Tesla';
}

//호출
console.log(cars.find(searchValue1)); // {"name": "Tesla","price": 50000}
console.log(cars.filter(searchValue1)); // {"name": "Tesla","price": 50000}


-------------------------------------------------------------------------------------------------------------------------------------------------------------------------



const cars = [
{name: 'Tesla', price: 50000},
{name: 'Benz', price: 80000},
{name: 'BMW', price: 70000},
{name: 'Audi', price: 60000}
];

console.log('-----------------------------------------------------find() - 콜백함수 내부에');

//콜백함수 내부에
let searchValue2 = cars.find(function(ele){

//할 일 처리 --> return
return ele.name === 'Audi';
});

//호출
console.log(searchValue2); // {"name": "Audi","price": 60000}

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

console.log('-----------------------------------------------------find() - 화살표 함수');

const cars = [
{name: 'Tesla', price: 50000},
{name: 'Benz', price: 80000},
{name: 'BMW', price: 70000},
{name: 'Audi', price: 60000}
];

//화살표 함수(=>)
let searchValue3 = cars.find(ele=>ele.name === 'Benz');
console.log(searchValue3); // {"name": "Benz","price": 80000}

반응형

include, join, reverse

개발 및 관리/Javascript 2023. 11. 18. 18:51 posted by HighLighter
반응형


//[16]: 배열에 특정 요소가 포함되어 있는지 없는지 알기 --> include() 메서드

const testAr16 = ['Korea','Usa','China','Japan','Canada'];
console.log(testAr16);

console.log(testAr16.includes('Korea')); //true
console.log(testAr16.includes('Russia')); //false

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

//[17] : 배열내 요소들을 하나로 묶어주기 --> 그때, 문자열(String) 타입으로 묶어주기 --> join()
const testAr17 = ['Korea','Usa','China','Japan','Canada'];
console.log(testAr17);

console.log(testAr17.join()); // 아무 옵션도 넣지 않고 호출하면 배열 요소 각각을 콤마(,)로 공백도 없이 묶어줌.
console.log('결과 타입은= ' + typeof testAr17.join()); //string

console.log(testAr17.join('-'));  // 넣어주는 구분자로 각각의 요소를 구분하여 하나의 문자열로 이어줌
console.log(testAr17.join(' '));
console.log(testAr17.join(', '));
console.log(testAr17.join('+'));
console.log(testAr17.join('/'));

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

//요소가 undefined, null이 있을 때 join() 메서드를 사용하면 ? --> 빈 문자열로 연결
const testAr17_temp1 = ['Korea', 'Usa', undefined, 'China', 'Japan', null, 'Canada'];
console.log(testAr17_temp1);
console.log(testAr17_temp1.join(', '));

//빈 배열이면? --> 빈 문자열로 반환
const testAr17_temp2 = [];
console.log(testAr17_temp2);
console.log(testAr17_temp2.join(', ')); // 구분자를 넣어봤자 상관없이 결과는 --> ""
console.log(typeof [].join(', ')); // string

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

//[18] : 배열내 요소들을 거꾸로 출력하기 --> reverse();
const testAr18  = ['a', 'b', 'c', 'd', 'e'];
console.log(testAr18);
console.log(testAr18.reverse()); // e, d, c, b, a
console.log(testAr18); // 원본 배열을 가지고 작업처리를 하기 때문에 --> 거꾸로 되어져 있음.

반응형

'개발 및 관리 > Javascript' 카테고리의 다른 글

isNan() vs Number.isNaN() 비교  (0) 2023.11.18
find, filter  (0) 2023.11.18
숫자, 문자 찾기  (0) 2023.11.18
인덱스 몇 번째에 있는지 찾기 indexOf  (1) 2023.10.31
배열 붙이기 concat() 메서드  (0) 2023.10.31

숫자, 문자 찾기

개발 및 관리/Javascript 2023. 11. 18. 18:49 posted by HighLighter
반응형

const number15 = [1,2,3,4,56,7,8,9,10,1,1,2,2,2,3,3,3,3];

const searchNumber = 1;
let startPosition = 0;
let lastResult = [];

while(true) {

let idxRst = number15.indexOf(searchNumber, startPosition); // 있으면 인덱스 return, 없으면 -1 return

//조건문 --> return된 인덱스가 -1이면 loop 종료
if(idxRst == -1)
  break;

lastResult.push(idxRst); //찾은 인덱스는 결과 변수에 push
startPosition = idxRst + 1; //찾은 것 그 다음부터 순회를 이어가야하니까 --> 찾은 것에 1 더해서 다시 순회.
}

console.log(lastResult);

console.log("찾고자 하는 ${searchNumber}의 인덱스는 = " + lastResult);
console.log("출현 빈도 수 = " + lastResult.length);

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

const number15 = ['Smith','Tom','Tommy','Ford','Willson','Smith'];

const searchNumber = 'Smith';
let startPosition = 0;
let lastResult = [];

while(true) {

let idxRst = number15.indexOf(searchNumber, startPosition); // 있으면 인덱스 return, 없으면 -1 return

//조건문 --> return된 인덱스가 -1이면 loop 종료
if(idxRst == -1)
  break;

lastResult.push(idxRst); //찾은 인덱스는 결과 변수에 push
startPosition = idxRst + 1; //찾은 것 그 다음부터 순회를 이어가야하니까 --> 찾은 것에 1 더해서 다시 순회.
}

console.log(lastResult);

console.log("찾고자 하는 ${searchNumber}의 인덱스는 = " + lastResult);
console.log("출현 빈도 수 = " + lastResult.length);

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

const number15 = 'Welcome, Hello World~~~!!!';

const searchNumber = 'l';
let startPosition = 0;
let lastResult = [];

while(true) {

let idxRst = number15.indexOf(searchNumber, startPosition); // 있으면 인덱스 return, 없으면 -1 return

//조건문 --> return된 인덱스가 -1이면 loop 종료
if(idxRst == -1)
  break;

lastResult.push(idxRst); //찾은 인덱스는 결과 변수에 push
startPosition = idxRst + 1; //찾은 것 그 다음부터 순회를 이어가야하니까 --> 찾은 것에 1 더해서 다시 순회.
}

console.log(lastResult);

console.log("찾고자 하는 ${searchNumber}의 인덱스는 = " + lastResult);
console.log("출현 빈도 수 = " + lastResult.length);

반응형

'개발 및 관리 > Javascript' 카테고리의 다른 글

find, filter  (0) 2023.11.18
include, join, reverse  (0) 2023.11.18
인덱스 몇 번째에 있는지 찾기 indexOf  (1) 2023.10.31
배열 붙이기 concat() 메서드  (0) 2023.10.31
splice() 메서드, splice, splice 메서드  (1) 2023.10.29
반응형

//11. 인덱스 몇 번째에 있는지 찾기 indexOf

//알파벳 찾기
console.clear();
let abcArr1 = "ABCDEFGHIJKMN";
console.log('---------------------------------------------------- J의 인덱스는?');
console.log(abcArr1.indexOf('J')); // 9 

//역순으로 찾기 --> lastIndexOf();
let abcArr2 = "ABCDEFGHIJKJMN";

console.log('---------------------------------------------------- J의 역순 인덱스는?');
console.log(abcArr2.lastIndexOf('J')); // 11

//대소문자 구분을 한다. (Default)
let abcArr3 = "ABCDEFGHIJKJMN";
console.log('---------------------------------------------------- J의 인덱스는? 대소문자 구분');
console.log(abcArr3.lastIndexOf('j')); // -1

//대(소)문자 변환 후 --> indexOf 사용
let abcArr4 = "abcdABCD";
console.log('---------------------------------------------------- 대소문자 변환');
console.log(abcArr4.lastIndexOf('A')); // 4
console.log(abcArr4.toUpperCase().indexOf('A')); //0 
console.log(abcArr4.toUpperCase().lastIndexOf('A')); // 4

//13. indexOf 옵션 --> indexOf("찾을 특정 값(value)", "시작할 위치(position)")
console.clear();
console.log('---------------------------------------------------- 시작 위치 옵션');
const nums = ['k','o','r','e','a','u','s','a'];
console.log(nums.indexOf('a')); //4 
console.log(nums.indexOf('a', 2)); //4
console.log(nums.indexOf('a', 6)); //7

console.log('---------------------------------------------------- 시작 위치 옵션 - 문자열');
const strs13 = "Hello, World~!!!";

console.log(strs13.indexOf('o')); //4
console.log(strs13.indexOf('o', 5)); //8
console.log(strs13.indexOf('o', 9)); //-1

//14-1. 특정 번째에 있는 값의 인덱스 찾기 -->  세번째 4 찾기
console.log('---------------------------------------------------- 특정 번째 인덱스 찾기');
const numbers = [2,3,4,3,5,8,5,3,4,8,4,2,1];
console.log(numbers);

console.log(numbers.indexOf(4));    // 2
console.log(numbers.indexOf(4, 3)); // 8
console.log(numbers.indexOf(4, 9)); // 10

//14-2. 특정 번째에 있는 값의 인덱스 찾기 -->  세번째 3 찾기
console.log(numbers.indexOf(3));    // 1
console.log(numbers.indexOf(3, numbers.indexOf(3)+1)); // 3
console.log(numbers.indexOf(3, numbers.indexOf(3, numbers.indexOf(3)+1)+1)); // 7

반응형

'개발 및 관리 > Javascript' 카테고리의 다른 글

include, join, reverse  (0) 2023.11.18
숫자, 문자 찾기  (0) 2023.11.18
배열 붙이기 concat() 메서드  (0) 2023.10.31
splice() 메서드, splice, splice 메서드  (1) 2023.10.29
jQuery Quick API Reference  (0) 2023.02.01