ES6の復習メモ
find
//こんなオブジェクトがあったとして
let users = [
{name: 'jill'},
{name: 'Alex'},
{name: 'Bill'},
]
//Alexだけ探したい!みたいなとき従来のfor文だとこんな感じ
let user;
for(let i = 0; i < users.length; i++){
if(users[i].name === 'Alex'){
user = users[i];
console.log(user)
}
}
findを使うとこうできる
users.find((user) => {
//retrnを忘れると動かないので注意
return user.name === 'Alex';
})
//これがretrunされる
{name: "Alex"}
findの応用例
//投稿されたオブジェクトがあったとして
let posts = [
{id: 1, title: 'New post'},
{id: 2, title: 'Old post'},
]
//コメントが追加されたとする それをfindを使って見つける
let comment = { postId: 1, content: 'Create Post'};
//posts,commentを引き渡して以下の処理を実行する
function postForComment(posts, comment){
//postsのオブジェクトの中で、post.idとcomment.postIdが一緒のものをretrunで返す
return posts.find((post) =>{
return post.id === comment.postId;
})
}
//関数を実行すると
postForComment(posts, comment);
{id: 1, title: "New post"}が返ってくる
filter
//最初は古い書き方
let producets = [
{ name : 'cucmber', type: 'vegetable'},
{ name : 'banana', type: 'fruit'},
{ name : 'celery', type: 'vegetable'},
{ name : 'orange', type: 'fruit'},
]
let array = []
for(let i = 0; i < producets.length; i++){
if(producets[i].type === 'fruit'){
array.push(producets[i])
}
}
//filterを使うと特定の物をフィルタリングできる
producets.filter((product) => {
return product.type == 'fruit'
})
//これが返ってくる 0: {name: "banana", type: "fruit"}1: {name: "orange", type: "fruit"}length:
filter応用例
//さらに応用のフィルタリング
let array = [
{ name : 'cucmber', type: 'vegetable', quantity: 0, price: 1},
{ name : 'banana', type: 'fruit', quantity: 10, price: 15},
{ name : 'celery', type: 'vegetable', quantity: 30, price: 13},
{ name : 'orange', type: 'fruit', quantity: 3, price: 5},
]
// typeが野菜で、quantityが0より大きく、priceが10より小さいものでフィルタリング
array.filter((item)=> {
return item.type === 'vegetable'
&& item.quantity > 0
&& item.price < 10
})
//既存のままだと野菜ではフィルタリングしても存在しないので、オブジェクトを以下のように変更するとちゃんとそれだけがフィルタリングされて値が返ってくる
{ name : 'celery', type: 'vegetable', quantity: 30, price: 9},
filter活用場面的な
//投稿された値がオブジェクトであって
let post = {id: 4, title: 'New post'};
//コメントのオブジェクトにpostIdとcontentが入っている
let comments = [
{postId: 4, content: 'awsome post'},
{postId: 3, content: 'it was ok'},
{postId: 4, content: 'no!'},
]
//フィルタリングする用の関数を作って、紐づいているものを取得したいとする
function comentForPost(post, comments){
//commentsのオブジェクトをフィルタリングして
return comments.filter((comment)=> {
//postIdと引数で渡されたpost.idに一致したものを返す
return comment.postId === post.id;
})
}
//実際に関数を実行してフィルタリングしてみると
comentForPost(post, comments)
//(2) [{…}, {…}]
//0: {postId: 4, content: "awsome post"}
//1: {postId: 4, content: "no!"}
//というように値をフィルタリングすることができる
filter問題
//50より大きいものだけをフィルタリングしなさい
let numbers = [15, 25, 35, 45, 55, 65, 75, 85, 95];
let filteredNumbers = numbers.filter((nums) => {
return nums > 50
})
Author And Source
この問題について(ES6の復習メモ), 我々は、より多くの情報をここで見つけました https://qiita.com/mitukun32/items/148985b9352db8646a02著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .