循环遍历json对象并检查URL是否以某个值结束

时间:2015-04-09 10:38:50

标签: javascript jquery regex

for(var j=0; j<product.image_groups[0].images.length; j++){
                          console.log("images in json" + product.image_groups[0].images[j].link)

                    }

product.image_groups[0].images[j].link会返回一个网址,例如:

http://images.domain.com/is/image/domain/hbeu50274296_021_11
http://images.domain.com/is/image/domain/hbeu50274296_021_10
http://images.domain.com/is/image/domain/hbeu50274296_021_21

在循环中,我只想将以_21结尾的URL保存到变量中,而不确定如何执行此操作。我想用正则表达式,但究竟是怎么回事?

4 个答案:

答案 0 :(得分:1)

使用string.match功能。仅当字符串以_21子字符串结尾时,以下匹配函数才会匹配该字符串。 $声称我们处于一条线的末端。

for(var j=0; j<product.image_groups[0].images.length; j++){
    if (product.image_groups[0].images[j].link.match(/_21$/)) {
                          console.log("images in json" + product.image_groups[0].images[j].link)

                    }
}

OR

使用regex.test功能。

for(var j=0; j<product.image_groups[0].images.length; j++){
    if (/_21$/.test(product.image_groups[0].images[j].link)) {
                          console.log("images in json" + product.image_groups[0].images[j].link)

                    }
}

示例:

var l = ["http://images.domain.com/is/image/domain/hbeu50274296_021_11","http://images.domain.com/is/image/domain/hbeu50274296_021_10","http://images.domain.com/is/image/domain/hbeu50274296_021_21"];
for (i=0;i<l.length;i++) {
  if(l[i].match(/_21$/)) {
    console.log(l[i])
  }
}

<强>输出:

http://images.domain.com/is/image/domain/hbeu50274296_021_21

答案 1 :(得分:0)

您可以按_拆分网址并检查最后一个值以查看它是否为21。像这样:

for (var j = 0; j < product.image_groups[0].images.length; j++) {
    var finalPart = product.image_groups[0].images[j].link.split('_').pop();
    if (finalPart == '21') {
        // do something...
    }
}

答案 2 :(得分:0)

您可以根据给定的要求将图像列表缩小为新列表。对我来说最简单的方法是检查 - 只需使用indexOf方法。

var images = product.image_groups[0].images;
var results = images.reduce(function (list, url) {
  if (url.indexOf('_21') === url.length - 3) {
    list.push(url);
  }

  return list;
}, []);

// use results here

答案 3 :(得分:0)

尝试,干净,简单,快速。

var allImages = product.image_groups[0].images;

for ( //make a for to get all images
    var j
    in allImages
) {
    if (allImages[j].link.slice(-2) == "21") { //check if last 2 characters are "21";
        console.log("images in json" + allImages[j].link);
    }
}