A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/some below:

Array.prototype.some() - JavaScript | MDN

Array.prototype.some()

Baseline Widely available

some() 方法测试数组中是否至少有一个元素通过了由提供的函数实现的测试。如果在数组中找到一个元素使得提供的函数返回 true,则返回 true;否则返回 false。它不会修改数组。

尝试一下
const array = [1, 2, 3, 4, 5];

// Checks whether an element is even
const even = (element) => element % 2 === 0;

console.log(array.some(even));
// Expected output: true
语法
some(callbackFn)
some(callbackFn, thisArg)
参数
callbackFn

为数组中的每个元素执行的函数。它应该返回一个真值以指示元素通过测试,否则返回一个假值。该函数被调用时将传入以下参数:

element

数组中当前正在处理的元素。

index

正在处理的元素在数组中的索引。

array

调用了 some() 的数组本身。

thisArg 可选

执行 callbackFn 时用作 this 的值。参见迭代方法。

返回值

如果回调函数对数组中至少一个元素返回一个真值,则返回 true。否则返回 false。

描述

some() 方法是一个迭代方法。它为数组中的每个元素调用一次指定的 callbackFn 函数,直到 callbackFn 返回一个真值。如果找到这样的元素,some() 方法将会立即返回 true 并停止遍历数组。否则,如果 callbackFn 对所有元素都返回假值,some() 就会返回 false。

some() 类似于数学中的“存在量词(∃)”。特别地,在对于一个空数组,任何条件下它都返回 false。

callbackFn 仅针对已分配值的数组索引调用。它不会为稀疏数组中的空槽调用。

some() 不会改变调用它的数组,但指定的 callbackFn 函数可以。但是请注意,数组的长度是在第一次调用 callbackFn 之前保存的。因此:

警告: 上述类型的并发修改经常导致难以理解的代码,通常应避免(特殊情况除外)。

some() 方法是通用的。它只期望 this 值具有 length 属性和整数键属性。

示例 测试数组元素的值

下面的例子检测在数组中是否有元素大于 10。

function isBiggerThan10(element, index, array) {
  return element > 10;
}

[2, 5, 8, 1, 4].some(isBiggerThan10); // false
[12, 5, 8, 1, 4].some(isBiggerThan10); // true
使用箭头函数测试数组元素的值

箭头函数可以通过更简洁的语法实现相同的用例。

[2, 5, 8, 1, 4].some((x) => x > 10); // false
[12, 5, 8, 1, 4].some((x) => x > 10); // true
判断数组元素中是否存在某个值

此例为模仿 includes() 方法,若元素在数组中存在,则回调函数返回值为 true :

const fruits = ["apple", "banana", "mango", "guava"];

function checkAvailability(arr, val) {
  return arr.some((arrVal) => val === arrVal);
}

checkAvailability(fruits, "kela"); // false
checkAvailability(fruits, "banana"); // true
将任意值转换为布尔类型
const TRUTHY_VALUES = [true, "true", 1];

function getBoolean(value) {
  if (typeof value === "string") {
    value = value.toLowerCase().trim();
  }

  return TRUTHY_VALUES.some((t) => t === value);
}

getBoolean(false); // false
getBoolean("false"); // false
getBoolean(1); // true
getBoolean("true"); // true
在稀疏数组上使用 some()

some() 不会在空槽上运行它的断言函数。

console.log([1, , 3].some((x) => x === undefined)); // false
console.log([1, , 1].some((x) => x !== 1)); // false
console.log([1, undefined, 1].some((x) => x !== 1)); // true
在非数组对象上调用 some()

some() 方法读取 this 的 length 属性,然后访问每个整数索引,直到到达末尾或 callbackFn 返回 true。

const arrayLike = {
  length: 3,
  0: "a",
  1: "b",
  2: "c",
};
console.log(Array.prototype.some.call(arrayLike, (x) => typeof x === "number"));
// false
规范 浏览器兼容性 参见

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4