JavaScript中的array.every方法详解
在JavaScript中,数组是一种非常常用的数据结构,而array.every方法是数组对象的一个非常有用的方法之一。在本文中,我们将详细介绍array.every方法的用法和示例代码。
array.every方法简介
array.every方法是JavaScript数组对象的一个方法,用于检测数组中的所有元素是否满足指定的条件。它接受一个回调函数作为参数,该回调函数会对数组中的每个元素进行检测,如果所有元素都满足条件,则返回true,否则返回false。
array.every方法的语法如下:
array.every(callback(element, index, array), thisArg)
其中,callback是一个回调函数,element表示数组中的当前元素,index表示当前元素的索引,array表示当前数组对象,thisArg是可选的参数,用于指定回调函数中的this值。
示例代码
下面我们将通过一些示例代码来演示array.every方法的用法。
示例1:检测数组中的所有元素是否大于0
const numbers = [1, 2, 3, 4, 5];
const allPositive = numbers.every(num => num > 0);
console.log(allPositive); // true
Output:
在这个示例中,我们定义了一个包含正整数的数组numbers,然后使用array.every方法检测数组中的所有元素是否大于0,最终返回true。
示例2:检测数组中的所有元素是否为偶数
const numbers = [2, 4, 6, 8, 10];
const allEven = numbers.every(num => num % 2 === 0);
console.log(allEven); // true
Output:
在这个示例中,我们定义了一个包含偶数的数组numbers,然后使用array.every方法检测数组中的所有元素是否为偶数,最终返回true。
示例3:检测数组中的所有元素是否相等
const values = [1, 1, 1, 1, 1];
const allEqual = values.every((num, index, array) => num === array[0]);
console.log(allEqual); // true
Output:
在这个示例中,我们定义了一个包含相同元素的数组values,然后使用array.every方法检测数组中的所有元素是否相等,最终返回true。
示例4:检测数组中的所有元素是否依次递增
const numbers = [1, 2, 3, 4, 5];
const allIncreasing = numbers.every((num, index, array) => index === 0 || num === array[index - 1] + 1);
console.log(allIncreasing); // true
Output:
在这个示例中,我们定义了一个依次递增的数组numbers,然后使用array.every方法检测数组中的所有元素是否依次递增,最终返回true。
示例5:检测数组中的所有元素是否为偶数且大于0
const numbers = [2, 4, 6, 8, 10];
const allEvenAndPositive = numbers.every(num => num % 2 === 0 && num > 0);
console.log(allEvenAndPositive); // true
Output:
在这个示例中,我们定义了一个包含偶数的数组numbers,然后使用array.every方法检测数组中的所有元素是否为偶数且大于0,最终返回true。
示例6:检测数组中的所有元素是否为负数
const numbers = [-1, -2, -3, -4, -5];
const allNegative = numbers.every(num => num < 0);
console.log(allNegative); // true
Output:
在这个示例中,我们定义了一个包含负数的数组numbers,然后使用array.every方法检测数组中的所有元素是否为负数,最终返回true。
示例7:检测数组中的所有元素是否为奇数
const numbers = [1, 3, 5, 7, 9];
const allOdd = numbers.every(num => num % 2 !== 0);
console.log(allOdd); // true
Output:
在这个示例中,我们定义了一个包含奇数的数组numbers,然后使用array.every方法检测数组中的所有元素是否为奇数,最终返回true。
示例8:检测数组中的所有元素是否为负偶数
const numbers = [-2, -4, -6, -8, -10];
const allNegativeEven = numbers.every(num => num < 0 && num % 2 === 0);
console.log(allNegativeEven); // true
Output:
在这个示例中,我们定义了一个包含负偶数的数组numbers,然后使用array.every方法检测数组中的所有元素是否为负偶数,最终返回true。
示例9:检测数组中的所有元素是否为负奇数
const numbers = [-1, -3, -5, -7, -9];
const allNegativeOdd = numbers.every(num => num < 0 && num % 2 !== 0);
console.log(allNegativeOdd); // true
Output:
在这个示例中,我们定义了一个包含负奇数的数组numbers,然后使用array.every方法检测数组中的所有元素是否为负奇数,最终返回true。
示例10:检测数组中的所有元素是否为连续的偶数
const numbers = [2, 4, 6, 8, 10];
const allConsecutiveEven = numbers.every((num, index, array) => index === 0 || num === array[index - 1] + 2);
console.log(allConsecutiveEven); // true
Output:
在这个示例中,我们定义了一个连续的偶数数组numbers,然后使用array.every方法检测数组中的所有元素是否为连续的偶数,最终返回true。
示例11:检测数组中的所有元素是否为连续的奇数
const numbers = [1, 3, 5, 7, 9];
const allConsecutiveOdd = numbers.every((num, index, array) => index === 0 || num === array[index - 1] + 2);
console.log(allConsecutiveOdd); // true
Output:
在这个示例中,我们定义了一个连续的奇数数组numbers,然后使用array.every方法检测数组中的所有元素是否为连续的奇数,最终返回true。
示例12:检测数组中的所有元素是否为斐波那契数列
const fibonacci = [1, 1, 2, 3, 5, 8, 13];
const isFibonacci = fibonacci.every((num, index, array) => index < 2 || num === array[index - 1] + array[index - 2]);
console.log(isFibonacci); // true
Output:
在这个示例中,我们定义了一个斐波那契数列数组fibonacci,然后使用array.every方法检测数组中的所有元素是否为斐波那契数列,最终返回true。
示例13:检测数组中的所有元素是否为质数
const primes = [2, 3, 5, 7, 11];
const isPrime = primes.every(num => {
if (num <= 1) {
return false;
}
for (let i = 2; i <= Math.sqrt(num); i++) {
if (num % i === 0) {
return false;
}
}
return true;
});
console.log(isPrime); // true
Output:
在这个示例中,我们定义了一个质数数组primes,然后使用array.every方法检测数组中的所有元素是否为质数,最终返回true。
示例14:检测数组中的所有元素是否为完全平方数
const squares = [1, 4, 9, 16, 25];
const isSquare = squares.every(num => Math.sqrt(num) % 1 === 0);
console.log(isSquare); // true
Output:
在这个示例中,我们定义了一个完全平方数数组squares,然后使用array.every方法检测数组中的所有元素是否为完全平方数,最终返回true。
示例15:检测数组中的所有元素是否为回文数
const palindromes = ['level', 'radar', 'madam', 'racecar'];
const isPalindrome = palindromes.every(str => str === str.split('').reverse().join(''));
console.log(isPalindrome); // true
Output:
在这个示例中,我们定义了一个回文数数组palindromes,然后使用array.every方法检测数组中的所有元素是否为回文数,最终返回true。
示例16:检测数组中的所有元素是否为同一个字符串
const words = ['hello', 'hello', 'hello', 'hello'];
const allSame = words.every((word, index, array) => word === array[0]);
console.log(allSame); // true
Output:
在这个示例中,我们定义了一个包含相同字符串的数组words,然后使用array.every方法检测数组中的所有元素是否为同一个字符串,最终返回true。
示例17:检测数组中的所有元素是否为不同的字符串
const words = ['apple', 'banana', 'cherry', 'date'];
const allDifferent = words.every((word, index, array) => array.indexOf(word) === index);
console.log(allDifferent); // true
Output:
在这个示例中,我们定义了一个包含不同字符串的数组words,然后使用array.every方法检测数组中的所有元素是否为不同的字符串,最终返回true。
示例18:检测数组中的所有元素是否为URL
const urls = ['https://www.deepinout.com', 'http://www.example.com', 'https://www.google.com'];
const isURL = urls.every(url => /^https?:\/\/(www\.)?[a-zA-Z0-9-]+\.[a-z]{2,}$/i.test(url));
console.log(isURL); // true
Output:
在这个示例中,我们定义了一个URL数组urls,然后使用array.every方法检测数组中的所有元素是否为URL,最终返回true。
示例19:检测数组中的所有元素是否为邮箱地址
const emails = ['info@deepinout.com', 'john.doe@example.com', 'jane.doe@gmail.com'];
const isEmail = emails.every(email => /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(email));
console.log(isEmail); // true
Output:
在这个示例中,我们定义了一个邮箱地址数组emails,然后使用array.every方法检测数组中的所有元素是否为邮箱地址,最终返回true。
示例20:检测数组中的所有元素是否为手机号码
const phoneNumbers = ['1234567890', '9876543210', '555-555-5555'];
const isPhoneNumber = phoneNumbers.every(phone => /^\d{10}/.test(phone) || /^\d{3}-\d{3}-\d{4}/.test(phone));
console.log(isPhoneNumber); // true
Output:
在这个示例中,我们定义了一个手机号码数组phoneNumbers,然后使用array.every方法检测数组中的所有元素是否为手机号码,最终返回true。