javascript - 使用Google脚本数组中的搜索功能

标签 javascript arrays google-apps-script

我正在尝试创建一个函数来在单元格中搜索正则表达式,并在找到结果时返回给定值。 该函数适用于每个单元格,但我无法通过将函数应用于 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/

相关文章:

c++ - 使用除法技术求数组的最大公约数

google-apps-script - 谷歌应用程序脚本 - 搜索并替换谷歌文档上的文本

javascript - 我需要帮助弄清楚为什么我在这个函数中得到 NaN

javascript - karma : Uncaught ReferenceError: require is not defined 中的 Jasmine 测试

c++ - 如何使用循环和数组在 C++ 中进行比较和检查

google-apps-script - 允许脚本编辑锁定的单元格

javascript - 我可以有一个 id 变量并且在调用客户端函数时遇到问题吗... google-apps-script

javascript谷歌地图地理编码器初始化

javascript - 如何在 enyo 中使用 SOAP?

php - 是否可以将 PHP 函数的参数列表转换为数组?