some()方法在这个数组匹配检查代码中如何在JavaScript中工作?

时间:2017-10-24 11:30:04

标签: javascript arrays

请考虑以下代码:

let sites = ['cnn.com', 'nbc.com'];
if (sites.some(site => location.hostname.includes(site))) {
    // Do stuff...
}

我理解some()方法检查数组是否包含某些内容,但我不明白具体用法:

(site => location.hostname.includes(site))

这个箭头在我看来并不像箭头功能,因为它之后没有{}。此外,在我看来, site 这个词有一个“重复”。

如何构建和处理此语句,尤其是箭头和看似重复的内容?

2 个答案:

答案 0 :(得分:2)

表达式:

site => location.hostname.includes(site)

依赖于箭头函数的隐式返回,它相当于:

site => { 
    return location.hostname.includes(site)
}

在隐式返回对象时也要小心,而不是:

() => { prop1: "value", prop2: "value2"}

应该是:

() => ({ prop1: "value", prop2: "value2"})

答案 1 :(得分:0)

此代码

site => location.hostname.include(site)

相同
function(site) {
    return location.hostname.include(site)
}

为数组中的每个项调用该函数。在这种情况下cnn.comcnbc.com

some()函数检查其中一个函数返回true。如果其中一个函数返回true,

ex:location.hostname.include('cnn.com')返回true

some()函数将返回true