Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 忽略.each()循环中空值的最佳实践?_Javascript_Jquery - Fatal编程技术网

Javascript 忽略.each()循环中空值的最佳实践?

Javascript 忽略.each()循环中空值的最佳实践?,javascript,jquery,Javascript,Jquery,我有一段代码: self.list.push(values); for (var i = 1; i < $(elemthree, this).text().match(/(\d+)(?!.*\d)/g, '$1'); i++) { self.list.push(values); } self.list.push(值); 对于(var i=1;i

我有一段代码:

self.list.push(values);
for (var i = 1; i < $(elemthree, this).text().match(/(\d+)(?!.*\d)/g, '$1'); i++) {
    self.list.push(values); 
}
self.list.push(值);
对于(var i=1;i<$(elemthree,this).text().match(/(\d+)(.*\d)/g,'$1');i++){
self.list.push(值);
}
它遍历站点上的一组数据,并输出特定元素的数组值,必要时可多次输出。这是跨多个站点(10+)运行的

然而,有一个站点在我需要的30行数据之后返回2500多行空数据,一旦数组完成并被外部程序解析,就会导致大量的处理时间。我通过将这段代码包装成以下代码来修复它:

if (values != '') {
    self.list.push(values);
    for (var i = 1; i < $(elemthree, this).text().match(/(\d+)(?!.*\d)/g, '$1'); i++) {
        self.list.push(values); 
    }
}
if(值!=''){
self.list.push(值);
对于(var i=1;i<$(elemthree,this).text().match(/(\d+)(.*\d)/g,'$1');i++){
self.list.push(值);
}
}
这是按预期的方式工作的,不会将空行添加到列表中,而且对于我将来可能要解析其数据的任何站点来说,这似乎也是未来的证明。但我觉得很不舒服。我这样做对吗?有没有更好的方法

(在任何人提到我有一个从I=1而不是I=0开始的循环,并删除第一个self.list.push之前-这是故意的,因为一些解析的站点没有提到数量,而是只列出了一次我需要的值。)

//检查它是否为emtpy

if (!values) {
  self.list.push(values);
  for (var i = 1; i < $(elemthree, this).text().match(/(\d+)(?!.*\d)/g, '$1'); i++) {
    self.list.push(values); 
  }
}
if(!值){
self.list.push(值);
对于(var i=1;i<$(elemthree,this).text().match(/(\d+)(.*\d)/g,'$1');i++){
self.list.push(值);
}
}
//检查它是否为空或空白

if (!values.trim()) {
  self.list.push(values);
  for (var i = 1; i < $(elemthree, this).text().match(/(\d+)(?!.*\d)/g, '$1'); i++) {
    self.list.push(values); 
  }  
}
if(!values.trim()){
self.list.push(值);
对于(var i=1;i<$(elemthree,this).text().match(/(\d+)(.*\d)/g,'$1');i++){
self.list.push(值);
}  
}

没关系。除此之外,还有许多其他不需要的值,其中
!=''将等于TRUE

考虑你想要什么而不是不想要什么。

您需要长度大于零的字符串。用那个

if (values.length > 0)

for循环对我来说没有意义。那么您多次将相同的值推送到数组?是的。我正在制作一个项目列表,这些项目可能会以(数组值)x2的形式出现多次。但是,如果它出现一次,那么它只是(数组值)。