>  기사  >  웹 프론트엔드  >  자바스크립트 배열에 일반적으로 사용되는 순회 메서드(코드 예제)

자바스크립트 배열에 일반적으로 사용되는 순회 메서드(코드 예제)

不言
不言앞으로
2018-10-26 16:16:542510검색

이 기사는 일반적으로 사용되는 JavaScript 배열의 순회 방법(코드 예제)에 대한 것입니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

자바스크립트 배열에 일반적으로 사용되는 순회 메서드(코드 예제)

머리말

이 글에서는 주로 일반적인 배열 순회 방법을 소개합니다: forEach, map, filter, find,every,some,reduce, 한 가지 공통점이 있습니다: 원본을 변경하지 않습니다. 정렬.

1. forEach: 배열을 순회합니다.

var colors = ["red","blue","green"];
// ES5遍历数组方法
for(var i = 0; i <pre class="brush:php;toolbar:false">// ES6 forEach
colors.forEach(function(color){
 console.log(color);//red blue green
});

또 다른 예를 살펴보겠습니다. 배열의 값을 순회하고 합계를 계산합니다.

var numbers = [1,2,3,4,5];
var sum = 0;
numbers.forEach(number=>sum+=number)
console.log(sum)//15

2. map: 배열을 다른 배열에 매핑합니다.

map 지정된 함수를 통해 배열의 각 요소를 처리하고 처리 후 새 배열을 반환합니다. Map은 원래 배열을 변경하지 않습니다.

forEach와 map의 차이점은 forEach에는 반환 값이 없다는 것입니다.
map은 값을 반환해야 하는데, 반환이 주어지지 않으면 기본적으로 정의되지 않은 값을 반환합니다

사용 시나리오 1
숫자 배열(A)이 있다고 가정하고, A 배열의 값을 B 배열에 넣습니다. double form

var numbers = [1,2,3];
var doubledNumbers = [];
// es5写法
for(var i = 0; i <pre class="brush:php;toolbar:false">// es6 map方法
var doubled = numbers.map(function(number){
   return number * 2;
})
console.log(doubled);//[2,4,6]

사용 시나리오 2 객체 배열(A)이 있다고 가정하고, A 숫자에 있는 객체의 특정 속성 값을 B 배열

var cars = [
  {model:"Buick",price:"CHEAP"},
  {model:"BMW",price:"expensive"}
];
var prices = cars.map(function(car){
    return car.price;
})
console.log(prices);//["CHEAP", "expensive"]

3에 저장합니다. 배열에서 지정된 조건을 충족합니다

filter( )는 숫자 요소를 감지하고 기준을 충족하는 모든 요소의 배열을 반환합니다. filter()는 원래 배열을 변경하지 않습니다.

사용 시나리오 1: 객체 배열이 있다고 가정하고(A), 배열에서 지정된 유형의 객체를 가져와서 배열 B에 넣습니다.

var porducts = [
  {name:"cucumber",type:"vegetable"},
  {name:"banana",type:"fruit"},
  {name:"celery",type:"vegetable"},
  {name:"orange",type:"fruit"}
];
// es5写法
var filteredProducts = [];
for(var i = 0; i <pre class="brush:php;toolbar:false">// es6 filter
var filtered2 = porducts.filter(function(product){
  return product.type === "vegetable";
})
console.log(filtered2);

사용 시나리오 2: 객체 배열이 있다고 가정합니다(A). , 다음 요구 사항을 충족하지 않는 객체를 필터링합니다. 조건 객체
조건: 야채의 양이 0보다 크고 가격이 10보다 작습니다.

var products = [
  {name:"cucumber",type:"vegetable",quantity:0,price:1},
  {name:"banana",type:"fruit",quantity:10,price:16},
  {name:"celery",type:"vegetable",quantity:30,price:8},
  {name:"orange",type:"fruit",quantity:3,price:6}
];
products = products.filter(function(product){
    return product.type === "vegetable" 
    && product.quantity > 0 
    && product.price <p><strong>사용 시나리오 3</strong>: 두 개의 배열(A , B), A의 id 값을 기준으로 B 배열과 일치하지 않는 데이터를 필터링합니다</p><pre class="brush:php;toolbar:false">var post = {id:4,title:"Javascript"};
var comments = [
   {postId:4,content:"Angular4"},
   {postId:2,content:"Vue.js"},
   {postId:3,content:"Node.js"},
   {postId:4,content:"React.js"},
];
function commentsForPost(post,comments){
   return comments.filter(function(comment){
     return comment.postId === post.id;
   })
}
console.log(commentsForPost(post,comments));//[{postId:4,content:"Angular4"},{postId:4,content:"React.js"}]

4. find: 테스트를 통과한 배열의 첫 번째 요소 값을 반환합니다(함수 내 판단) )

해당 매개변수는 콜백 함수이며, 모든 배열 멤버는 첫 번째 반환 값이 true인 멤버를 찾아서 해당 멤버를 반환할 때까지 순차적으로 콜백 함수를 실행합니다. 일치하는 멤버가 없으면 정의되지 않은 값이 반환됩니다.
사용 시나리오 1
객체 배열이 있다고 가정하고(A), 조건에 맞는 객체를 찾습니다

 var users = [
  {name:"Jill"},
  {name:"Alex",id:2},
  {name:"Bill"},
  {name:"Alex"}
 ];
// es5方法
 var user;
 for(var i = 0; i <pre class="brush:php;toolbar:false">// es6 find
user = users.find(function(user){
  return user.name === "Alex";
})
console.log(user);// {name:"Alex",id:2}找到后就终止循环

사용 시나리오 2: 객체 배열이 있다고 가정하고(A), 조건에 맞는 객체를 배열에서 찾습니다. 지정된 객체의 조건에 따라

var posts = [
 {id:3,title:"Node.js"},
 {id:1,title:"React.js"}
];
var comment = {postId:1,content:"Hello World!"};
function postForComment(posts,comment){
 return posts.find(function(post){
   return post.id === comment.postId;
 })
}
console.log(postForComment(posts,comment));//{id: 1, title: "React.js"}

5.every&some

every: 배열의 각 요소가 지정된 조건을 충족하는지 여부

some: 지정된 조건을 충족하는 배열의 요소가 있는지 여부

사용 시나리오 1: 객체 배열에서 각 컴퓨터 운영 체제를 계산합니다. 사용 가능한가? 16비트 운영 체제보다 크면 사용 가능하다는 뜻이고, 그렇지 않으면 사용할 수 없다는 뜻입니다.

//ES5方法
var computers = [
 {name:"Apple",ram:16},
 {name:"IBM",ram:4},
 {name:"Acer",ram:32}
];
var everyComputersCanRunProgram = true;
var someComputersCanRunProgram = false;
for(var i = 0; i <pre class="brush:php;toolbar:false">//ES6 some every 
var every = computers.every(function(computer){
  return computer.ram > 16;
})
console.log(every);//false
var some = computers.some(function(computer){
 return computer.ram > 16;
})
console.log(some);//true

간단히 말하면: Every: one true는 일부: 하나는 거짓입니다

사용 시나리오 2: 등록 페이지가 있다고 가정하고 모든 입력 콘텐츠의 길이가 0

function Field(value){
  this.value = value;
}
Field.prototype.validate = function(){
  return this.value.length > 0;
}
//ES5方法
var username = new Field("henrywu");
var telephone = new Field("18888888888");
var password = new Field("my_password");
console.log(username.validate());//true
console.log(telephone.validate());//true
console.log(password.validate());//true
//ES6 some every
var fields = [username,telephone,password];
var formIsValid = fields.every(function(field){
 return field.validate();
})
console.log(formIsValid);//true
if(formIsValid){
 // 注册成功
}else{
  // 给用户一个友善的错误提醒
}

보다 큰지 확인합니다. 6. 축소: 배열을 값으로 결합합니다.

reduce() 메서드는 메서드를 누산기로 수신하며 배열의 각 값(왼쪽에서 오른쪽으로) 병합을 시작하고 하나의 값으로 끝납니다.

사용 시나리오 1: 배열에 있는 모든 값의 합 계산

 var numbers = [10,20,30];
 var sum = 0;
//es5 方法
for(var i = 0; i <pre class="brush:php;toolbar:false">// es6 reduce
var sumValue = numbers.reduce(function(sum2,number2){
  console.log(sum2);//0 10 30 60
  return sum2 + number2;
},0);//sum2初始值为0
console.log(sumValue);

사용 시나리오 2:
배열에 있는 객체의 특정 속성을 다른 배열로 추출

 var primaryColors = [
   {color:"red"},
   {color:"yellow"},
   {color:"blue"}
 ];
 var colors = primaryColors.reduce(function(previous,primaryColor){
    previous.push(primaryColor.color);
    return previous;
 },[]);
 console.log(colors);//["red", "yellow", "blue"]

사용 시나리오 3: 결정 문자열은 대괄호가 대칭인가요

function balancedParens(string){
  return !string.split("").reduce(function(previous,char){
    if(previous <p class="comments-box-content"></p>

위 내용은 자바스크립트 배열에 일반적으로 사용되는 순회 메서드(코드 예제)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제