【问题标题】:need help with a condition while looping through an array在遍历数组时需要条件帮助
【发布时间】:2011-03-03 14:33:45
【问题描述】:

我有一个包含大约 20 个元素的数组,我需要在遍历这个数组时执行一些 if 语句,我需要帮助来创建这个 if 语句,因为我需要能够搜索字符串是否包含一些不会挂断整个应用程序的有效方式的文本。

var locations = [
                   ['Maryland', 'USA', 'Pentium IV', 120, '1 GB', '15"'],
                   ['New York', 'USA', 'Pentium IV', 40, '512 MB', '15" and 17"'],
              ['Frankfurt', 'Germany', 'Pentium IV', 100, '2 GB', '17"']
                ];

for (var i = 0; i < locations.length; i++) {
     var ram = locations[4];
     var monitor = locations[5];

     // need help with the if statement below
     if (ram < '1 GB' || monitor.startsWith("15")) {
       // do something
     }
}

我使用的是纯 javascript,没有 jquery 或其他框架。

非常感谢您的帮助。

【问题讨论】:

    标签: javascript arrays if-statement


    【解决方案1】:

    怎么样

    if (ram.indexOf('GB') >= 0)
    

    这只会检查字符串中是否包含单词“GB”。如果是,我们确定它是 1GB、2GB 等。如果不是,我们可能是在谈论 MB,因为机器上还没有使用 TB 的 RAM。

    当然,这取决于 RAM 的可能选择。它们来自(有限的)列表,还是用户可以自己输入?

    【讨论】:

      【解决方案2】:

      你这里有双数组,所以你需要locations[i]来引用正确的行。顺便说一句,Javascript 中没有 startsWith 函数。

      试试这个:-

      for (var i = 0; i < locations.length; i++) {
           var ram = locations[i][4];
           var monitor = locations[i][5];
      
           if ((ram.indexOf('MB') >= 0 && parseInt(ram) < 1024) || monitor.match("^15")) {
             // do something
           }
      }
      

      【讨论】:

        【解决方案3】:

        Javascript 是单线程的,所以不要使用 web workers(这是一个允许您在后台运行它的相当新的东西),您应该在循环中执行您想要的操作。

        【讨论】:

        • 这和问题有什么关系?
        • 我读错了这个问题,我以为他问他是否可以在其他地方的 for 循环内分派工作。我的错。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-26
        • 1970-01-01
        • 1970-01-01
        • 2017-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多