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保存到变量中,而不确定如何执行此操作。我想用正则表达式,但究竟是怎么回事?
答案 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);
}
}