我正在尝试创建一个函数来搜索单元格中的正则表达式,并在找到结果时返回给定值。 该功能适用于每个单元格,但我不能通过将函数应用于B1:B10而不仅仅是B10来使其工作。我希望它作为数组工作,以加快功能。 我将pagetype函数应用于数组时收到此错误消息。 TypeError:无法在对象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";
}

答案 0 :(得分:1)
数组没有search()
方法。数组是更广泛的对象类别的子类别。然后是一个JSON对象,它是一个对象。
对象 - 包括
数组是对象的子类别。将数组称为对象有点令人困惑。但这就是错误消息正在做的事情。
因为您使用的是RegEx,所以不能使用indexOf()
,这是字符串和数组的方法。
您可以将数组转换为字符串:
var myArray = myArray.toString();
然后在字符串中搜索匹配项。在您的情况下,您将返回一个预定义的值,以便它可以工作。在找到匹配项后,您似乎不需要从数组中提取某些内容。这将需要更多的处理。
if (typeof url === 'object') {//If data is an array
url = url.toString();
}