我正在尝试创建一个函数来在单元格中搜索正则表达式,并在找到结果时返回给定值。 该函数适用于每个单元格,但我无法通过将函数应用于 B1:B10 而不仅仅是 B10 的数组来使其工作。我希望它作为数组工作以加速功能。 当我将 pagetype 函数应用于数组时,我收到此错误消息。 类型错误:无法在对象 yfhhh 中找到函数搜索。 (第 13 行)。 我知道我需要以某种方式编辑该函数以使其在一系列单元格上工作,但我不确定如何......这是我的代码:
function pageType(string) {
if (string.map) // Test whether input is an array.
return string.map(page); // Recurse over array if so.
else {
return page(string);
}
}
function page(url) {
var productpage = /.*\.html.*/
var homepage = /^http:\/\/www\.domain.com\/$/
var categorypage = /^http:\/\/www\.domain\.com\/.*/
if (url.search(categorypage) > -1)
return "Category Page";
if (url.search(productpage) > -1)
return "Product Page";
if (url.search(homepage) > -1)
return "Homepage";
else
return "Brand Page";
}
最佳答案
数组没有 search()
方法。数组是更广泛的对象类别的子类别。然后是一个JSON对象,它是一个对象。
对象 - 包括
- JSON 对象 {'key':'value'}
- 数组['element1','element2']
数组是对象的子类别。将数组称为对象有点令人困惑。但这就是错误消息的作用。
因为您使用的是 RegEx,所以不能使用 indexOf()
,它既是字符串又是数组的方法。
您可以将数组转换为字符串:
var myArray = myArray.toString();
然后在字符串中搜索匹配项。在您的情况下,您将返回一个预定义的值,因此应该可以工作。找到匹配项后,您似乎不需要从数组中提取某些内容。这将需要更多处理。
if (typeof url === 'object') {//If data is an array
url = url.toString();
}
关于javascript - 使用Google脚本数组中的搜索功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42597334/