1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaScriptのarray(配列)をいい感じにするメソッド

Last updated at Posted at 2023-07-02

forEach

for文を簡単に書けるようになったやる

let posts = [
     { id: 23, title: 'JSニュース' },
      { id: 52, title: 'リファクター・シティ' },
      { id: 105, title: 'Rubyの良いところ' }
];


console.log(posts.forEach(post))

計算して配列に入れる

var images = [
  { height: 10, width: 30 },
  { height: 20, width: 90 },
  { height: 54, width: 32 }
];

var areas = []

images.forEach(function(image) {
	areas.push(image.height * image.width);
})


console.log(areas)

map

pushしないで格納する

オブジェクトの配列から興味のある値だけを引き抜く

var images = [
  { height: '34px', width: '39px' },
  { height: '54px', width: '19px' },
  { height: '83px', width: '75px' },
];

var heights = images.map(function(image){
	return image.height;
})

console.log(heights)

mapで演算

var trips = [
  { distance: 34, time: 10 },
  { distance: 90, time: 50 },
  { distance: 59, time: 25 }
];

var speeds = trips.map(function(trip){
	return trip.distance / trip.time;	
})

console.log(speeds)

pluckの実装

object['foo']みたいな

function pluck(array, property) {
  return array.map(function(element) {
  	return element[property];
   })
}

var colorObjects = [{ color: '' }, { color: '' }, { color: '黄色' }];

var colorNames = pluck(colorObjects, 'color');


console.log(colorNames)

filter

条件でtrueだったら配列に入れる

値の条件付き絞り込み

var numbers = [15, 25, 35, 45, 55, 65, 75, 85, 95];

var filteredNumbers =  numbers.filter(function(number) {
		return number > 50;
})

console.log(filteredNumbers);
var users = [
 { id: 1, admin: true },  
 { id: 2, admin: false },
 { id: 3, admin: false },
 { id: 4, admin: false },
 { id: 5, admin: true },
];

var filteredUsers = users.filter(function(user) {
	return user.admin === true;
})

console.log(filteredUsers);

rejectを実装

falseだったら格納するようにする(それ以外を格納する)

function reject(array, iteratorFunction) {
  return array.filter((element) => {
      return !iteratorFunction(element);
  });
}

var numbers = [10, 20, 30];
var lessThanFifteen = reject(numbers, function(number){
 return number > 15; // この条件以外を格納したい
});

console.log(lessThanFifteen);

find

特定のデータを1つ見つける

注意は最初のtrueになった1件目だけを返す

真偽値がtrueのものを探す

var users = [
  { id: 1, admin: false },
  { id: 2, admin: false },
  { id: 3, admin: true }
];

var admin = users.find(function(user) {
	return user.admin
})

console.log(admin)

特定の条件のものを探す

var accounts = [
  { balance: -10 },
  { balance: 12 },
  { balance: 0 }
];

var account = accounts.find(function(account) {
	return account.balance === 12;
})

console.log(account);

findWhere関数

あるオブジェクトのプロパティがある値をもっているかどうかを探す
height: 20 を探す

function findWhere(array, criteria) {
  return array.find(function(element) {
    var property = Object.keys(criteria); // プロパティがheightであることを伝える
    console.log(element[property]) // laddesのheightの情報
    console.log(criteria[property]) // プロパティのheightのものの情報
  	return element[property] === criteria[property]
  })
}


var ladders = [
 { id: 1, height: 20 },
 { id: 3, height: 25 }
];
 
console.log(findWhere(ladders, { height: 25 }))

アンケートが全員回答済みか

var users = [
  { id: 21, hasSubmitted: true },
  { id: 62, hasSubmitted: false },
  { id: 4, hasSubmitted: true }
];

var hasSubmitted = users.every(function(user) {
	return user. hasSubmitted
})

console.log(hasSubmitted)

every

真偽値を返す
すべてのデータが条件をtrueである
フォームのバリデーションがすべてのinputで満たしてしるかなどのチェックに使える

一つでも条件を満たさないとfalseを返す

true && false && true = false 

すべて条件を満たすとtrueを返す

some

真偽値を返す
一部のデータが条件をtrueである

一つでも条件を満たすとtrueを返す

true || false || true = true

すべて条件を満たさないとfalseを返す

通信中のリクエストの確認

ひとつでも条件を満たせばtrue

var requests = [
  { url: '/photos', status: 'complete' },
  { url: '/albums', status: 'pending' },
  { url: '/users', status: 'failed' }
];

var inProgress = requests.some(function(request) {
	return request.status === 'pending'
})

console.log(inProgress)

reduce

合計を求める
第二引数に初期値を持つ

初期値が0で合計を求める

var trips = [{ distance: 34 }, { distance: 12 } , { distance: 1 }];

var totalDistance = trips.reduce(function(sum, trip) {
  return trip.distance + sum;
}, 0)

console.log(totalDistance)

初期値がオブジェクト

var desks = [
  { type: 'sitting' },
  { type: 'standing' },
  { type: 'sitting' },
  { type: 'sitting' },
  { type: 'standing' }
];

var deskTypes = desks.reduce(function(prev, desk) {
  console.log(desk.type);
	if (desk.type === "sitting") {
  	prev.sitting += 1
  }
  
  if (desk.type === 'standing') {
  	prev.standing += 1
  }

   return prev;
}, { sitting: 0, standing: 0 });

console.log(deskTypes);

unique関数のかわり

重複したデータを纏める

function unique(array) {
   return [...new Set(array)];
}


var numbers = [1, 1, 2, 3, 4, 4];

console.log(unique(numbers))
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?