JavaScript에서 더 나은 루프
14654 단어 nodewebprogrammingjavascript

이 게시물에서는 코드를 더 간단하고 읽기 쉽게 만들 수 있는 for 루프, 배열 메서드의 형식을 살펴보겠습니다. 이러한 루프/메소드는 배열이나 개체의 데이터를 조작하려는 경우에 유용합니다.
루프에서
이러한 종류의 루프를 사용하면 배열 인덱스, 개체 키를 수동으로 반복할 필요가 없습니다.
//iterating over an array
let arr = [1, 2, 3, 4, 5]
for (let index in arr) {
console.log(arr[index])
}
// Output: 1,2,3,4,5
//iterating over object keys
let obj = { id: 1, msg: 'hello' }
for (let key in obj) {
console.log(obj[key])
}
// Output: 1, hello
for 루프
이 루프를 사용하면 특정 인덱스에서 값을 얻을 수 있습니다. 이 루프는 배열에서만 작동합니다.
for (let val of arr) {
console.log(val)
}
// Output: 1,2,3,4,5
배열 방법
이제 몇 가지 배열 루프 방법을 살펴보겠습니다. 배열을 처리할 때 루프가 너무 커지는 경향이 있으므로 항목을 다른 배열에 명시적으로 푸시해야 합니다. 다음 방법을 사용하면 이러한 시나리오를 보다 쉽게 처리할 수 있습니다. 다음 메서드는 콜백 함수를 배열의 각 요소에 대해 실행될 인수로 사용합니다. 몇 가지 예를 살펴보겠습니다.
배열 반복
이를 위해 array.forEach() 방법을 사용할 수 있습니다. For-each는 콜백을 인수로 받아 각 배열 요소에 대해 실행합니다.
// display index and value
arr.forEach((value, index) => console.log(`Index = ${index} Value = ${value}`))
배열 변환
기존 배열을 다른 형식으로 변환하려면 array.map() 메서드를 사용할 수 있습니다. map() 메서드는 콜백을 인수로 사용하고 새 배열을 반환합니다. 새 배열의 요소는 콜백에서 반환된 값입니다.
개체 배열이 있고 각 개체에는 ID, 이름이 있다고 가정해 보겠습니다. ID만 포함하는 배열이 필요합니다.
for 루프로
let data = [
{ id: 1, name: 'Phone', type: 'electronic' },
{ id: 2, name: 'Laptop', type: 'electronic' },
{ id: 3, name: 'Shirt', type: 'clothing' },
]
let ids = []
for (let i = 0; i < data.length; i++) {
ids.push(data[i].id)
}
지도와 함께
let ids = data.map(function(val) {
return val.id
})
또는 화살표 기능으로 더 짧고 간단하게
let ids = data.map(val => val.id)
배열에서 요소 필터링
배열에서 요소를 필터링하려면 array.filter() 메서드를 사용할 수 있습니다. filter() 메서드는 콜백을 기대하며, 이 콜백은 배열의 각 요소에 대해 실행되고 필터링된 항목을 포함하는 새 배열을 반환합니다. 콜백 함수가 지정된 요소에 대해 true를 반환하면 해당 요소는 필터링된 배열에 있게 됩니다.
전자 제품 선택
let electronics = data.filter(item => item.type == 'electronic')
배열에서 요소 검색
배열에서 요소를 검색하려면 array.find() 메서드를 사용할 수 있습니다. 여기에서 설명하는 다른 모든 방법과 마찬가지로 이 방법에도 콜백이 필요합니다. 콜백 함수는 true 또는 false를 반환해야 합니다. 콜백이 true를 반환하는 첫 번째 값이 이 메서드의 출력이 됩니다. 일치하는 항목이 없으면 함수는 undefined를 반환합니다.
'전화'라는 이름으로 검색
data.find(val => val.name == 'Phone')
배열에서 단일 값 가져오기
배열에서 단일 값을 얻으려면 array.reduce() 메서드를 사용할 수 있습니다. reduce() 메서드는 콜백 함수, 초기 값을 인수로 사용합니다. 콜백 인턴에는 필수 인수로 누산기 currentValue가 있습니다. 누산기는 콜백의 이전 실행에서 얻은 값을 포함하며 currentValue는 처리 중인 배열 요소입니다.
배열의 합과 곱
let arr = [1, 2, 3, 4, 5]
//sum of array elements
arr.reduce((accumulator, currentValue) => (accumulator + currentValue), 0)
// where 0 is the initial value
// Output: 15
// product of array elements
arr.reduce((accumulator, currentValue) => (acc * currentValue), 1)
// Output: 120
배열의 하나 이상의 요소에 대해 조건이 true인지 확인합니다.
이를 위해 array.some() 방법을 사용합니다. 이 메서드는 배열의 적어도 하나의 요소에 대해 조건이 true이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
let friends = [13, 15, 16, 18] //ages of group of friends
// checking if at least one of them is 18 or above
friends.some(val => val >= 18)
배열의 모든 요소에 대해 조건이 참인지 확인
이를 위해 array.every() 방법을 사용합니다. 이 메서드는 배열의 모든 요소에 대해 조건이 true이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
let giftPrices = [300, 350, 399, 400]
let budgetPerGift = 450
let checkBudget = price => price <= budgetPerGift
giftPrices.every(checkBudget) // true
budgetPerGift = 300
giftPrices.every(checkBudget) // false
챙겨야 할 것들
오늘은 여기까지입니다. 이러한 방법에는 많은 잠재력이 있습니다. MDN에 대한 문서를 살펴보고 시도해 보십시오.
이 게시물이 마음에 들면 공유하세요 :).
Reference
이 문제에 관하여(JavaScript에서 더 나은 루프), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kartik2406/better-loops-in-javascript-2716텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)