JavaScript 快速提示:some() 方法
我最近学到了一个很棒的 JavaScript 方法,之前从未用过。这是Wes Bos推荐给我的。这个some()
方法可以方便地测试数组的值,并判断是否至少返回一个值true
。它在 ES6 之前就已实现,并且得到了广泛的some()
支持(IE 11 也支持它)。
需要注意的是,此方法仅适用于 true Array
。其他可迭代类型未实现此方法。
问题:你有一个数组,里面记录了酒店允许携带的动物种类。你如何确定你的宠物蛇“Slithers先生”是否可以随你一起旅行?
较旧的方法:
var animals = ['dogs', 'cats', 'snakes', 'birds', 'pandas'];
var snakesAllowed = false;
for (var i = 0; i < animals.length; i++) {
if(animals[i] === 'snakes') {
snakesAllowed = true;
break;
}
}
console.log(snakesAllowed); // true
使用.some()
:
// Using arrow functions
const animals = ['dogs', 'cats', 'snakes', 'birds', 'pandas'];
const snakesAllowed = animals.some((type) => type === 'snakes');
console.log(snakesAllowed); // true
// Using normal functions
const animals = ['dogs', 'cats', 'snakes', 'birds', 'pandas'];
const snakesAllowed = animals.some(function(type) {
return type === 'snakes';
});
console.log(snakesAllowed); // true
附录:
@attacomsian在评论中提到,这.includes()
更适合解决上述问题。我完全同意。上面的例子只是为了说明.some()
它的工作原理,而不是以最有效的方式解决问题。
为了说明.some()
功能的另一个例子,假设我们有一系列漫画书的价格,我们想知道是否有任何价格超过 10 美元。
const prices = [5, 8, 11, 10, 25];
const aboveTen = prices.some((price) => price > 10);
console.log(aboveTen); // true
进一步阅读:MDN 网络文档
鏂囩珷鏉ユ簮锛�https://dev.to/mattsparks/quick-javascript-tip-the-some-method-207j