在循环数组时需要帮助处理条件

时间:2011-03-03 14:33:45

标签: javascript arrays if-statement

我有一个包含大约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或其他框架。

非常感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

怎么样

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

这将检查字符串中是否包含单词“GB”。如果是,我们确定它是1GB,2GB等。如果不是,我们可能用MB说话,因为尚未在机器中使用太字节RAM。

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

答案 1 :(得分: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
     }
}

答案 2 :(得分:1)

Javascript是单线程的,所以代替使用web workers这是一个允许你在后台运行它的新东西,你应该在循环中做你想做的事。