everyまたはsomeメソッド
everyメソッド (&&条件)
var users = [
{ id: 21, hasSubmitted: true },
{ id: 62, hasSubmitted: false },
{ id: 4, hasSubmitted: true }
];
var hasSubmitted;
users.every(function (user){
return user.hasSubmitted
})
someメソッド (||条件)
var requests = [
{ url: '/photos', status: 'complete' },
{ url: '/albums', status: 'pending' },
{ url: '/users', status: 'failed' }
];
var inProgress;
inProgress = requests.some(function(request){
return request.status == 'pending';
});
reduceメソッド
Case1
var trips = [{ distance: 34 }, { distance: 12 } , { distance: 1 }];
var totalDistance;
trips.reduce(function(totalDistance, trip){
return totalDistance + trip.distance
} ,0);
Case2
var desks = [
{ type: 'sitting' },
{ type: 'standing' },
{ type: 'sitting'},
{ type: 'sitting' },
{ type: 'standing' }
];
var deskTypes = desks.reduce(function(obj,desk) {
if (desk.type == "sitting"){
++obj.sitting;
}else{
++obj.standing;
}
return obj;
}, { sitting: 0, standing: 0 });
deskTypes
Case3
const numbers = [1,1,2,3,4,4];
function unique(array) {
return array.reduce(function(acc, element) {
var existingElement = acc.find(function(target) {
return target === element;
});
console.log(existingElement)
if (!existingElement) {
acc.push(element);
}
return acc;
}, []);
}
unique(numbers);
Constとletの使い分け
Case1
const name = "つよし";
let age = 42;
const dateOfBirth = '1977-09-19';
Case2
const statuses = [
{ code: 'OK', response: '正常に完了しました' },
{ code: 'FAILED', response: 'エラーが発生しました' },
{ code: 'PENDING', response: '処理中です...' }
];
let message = '';
let currentCode = 'OK';
for (let i = 0; i < statuses.length; i++) {
if (statuses[i].code === currentCode) {
message = statuses[i].response;
}
}
message;
currentCode
Case1
function doubleMessage(number) {
return `${number}を2倍すると${(2 * number)}になります`;
}
doubleMessage(20)
Case2
function fullName(firstName, lastName) {
return `${firstName} ${lastName}`;
}
fullName("Morita","Tsuyoshi")