🐕
array.every array.some
作成日:
2021/07/19
1
ざっくりいうと
every: 配列の中のどれかがfalseだったらfalse
some: 配列の中のどれかがtrueだったらtrue
使用例:
入力フォームなどですべてが入力されていないのに送信しようとしたとき、
everyを使えばエラーが出るようにする。など。
let computers: { name: string; ram: number }[] = [
{ name: 'Apple', ram: 24 },
{ name: 'Compaq', ram: 4 },
{ name: 'Acer', ram: 32 },
];
// 16GB ramが必要なソフト
// 全てで動かせるフラグ
let allComputersCanRun: boolean = true;
// どれかでは動かせるフラグ
let someComputersCanRun: boolean = false;
for (let i: number = 0; i < computers.length; i++) {
let computer = computers[i];
if (computer.ram < 16) {
allComputersCanRun = false;
} else {
someComputersCanRun = true;
}
}
console.log(allComputersCanRun);
console.log(someComputersCanRun);
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// everyを使って全てのcomputerで使えるかどうか
// 一個一個を判定して&&で繋ぐので一個でもfalse(16GB以下)があれば結果はfalseに
console.log(
computers.every(function (computer) {
return computer.ram >= 16;
})
);
// someを使って全てのcomputerで使えるかどうか
// 一個一個を判定して||で繋ぐので一個でもtrue(16GB以上)があれば結果はtrueに
console.log(
computers.some((computer) => {
return computer.ram >= 16;
})
);
const names: string[] = ['たく', 'はなこ', 'けんたろう', 'Michael'];
console.log(
'全員の名前が3文字以上' +
names.every((name) => {
return name.length >= 3;
})
);
console.log(
'誰かの名前が3文字以上' +
names.some((name) => {
return name.length >= 3;
})
);
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// everyとsomeの使いどころ TypeScriptあんまり機能してません。
class Field {
value: any;
validate: any;
constructor(value: any) {
this.value = value;
}
}
Field.prototype.validate = function () {
return this.value.length > 0;
};
let userName = new Field('my_userName');
let password = new Field('my_password');
let birthday = new Field('1992/12/19');
let fields = [userName, password];
let formIsValid = fields.every((field) => {
return field.validate();
});
if (formIsValid) {
console.log('サーバへリクエスト');
} else {
console.log('エラー');
}