Javascript 我应该更改数组中的字符串吗?
我从一个asps页面得到一个字符串,如下所示:Javascript 我应该更改数组中的字符串吗?,javascript,jquery,Javascript,Jquery,我从一个asps页面得到一个字符串,如下所示: ~/TestImages/media/9.jpg?width=443&height=388&ext=.jpg?id=92, ~/TestImages/media/8.jpg?width=506&height=337&ext=.jpg?id=91, ~/TestImages/media/jpeg-3.jpg?width=720&height=480&ext=.jpg?id=75, ~/TestIm
~/TestImages/media/9.jpg?width=443&height=388&ext=.jpg?id=92,
~/TestImages/media/8.jpg?width=506&height=337&ext=.jpg?id=91,
~/TestImages/media/jpeg-3.jpg?width=720&height=480&ext=.jpg?id=75,
~/TestImages/media/4.jpg?width=725&height=483&ext=.jpg?id=77,
~/TestImages/media/7.jpg?width=957&height=629&ext=.jpg?id=81,
~/TestImages/media/10.jpg?width=478&height=356&ext=.jpg?id=85,
但每个都有一个换行符“\r\n”
希望仅使用URL(即“/TestImages/media/9.jpg”)创建一个数组
尝试:
$.ajax({
url: url,
success: function(data){
var str = data.replace(/(\r\n|\n|\r)/gm,""),
imgArray = new Array,
tdata = str.split(",");
// make random order
for(var i=0; i < 13; i++){
var randomNumber = Math.floor(Math.random()*tdata.length);
imgArray.push(tdata.splice(randomNumber,1));
}
$.each(imgArray, function(i, item) {
var tmp = "";
tmp = item[0].match(/~(.*?)\.jpg/g, "$1");
item[0] = tmp;
});
}
});
$.ajax({
url:url,
成功:功能(数据){
var str=data.replace(/(\r\n |\n |\r)/gm,“”),
imgArray=新阵列,
tdata=str.split(“,”);
//乱序
对于(变量i=0;i<13;i++){
var randomNumber=Math.floor(Math.random()*tdata.length);
imgArray.push(数据拼接(随机数,1));
}
$。每个(imgArray,功能(i,项目){
var tmp=“”;
tmp=项目[0]。匹配(/~(.*)\.jpg/g,“$1”);
项目[0]=tmp;
});
}
});
没有太多机会更改数组中的值。。有人有办法做到这一点吗
var arr = $.map(data.split(','), function(s) {
return s.trim().split('?').shift();
});
$.ajax({ url:url, 成功:功能(数据){ var str=data.replace(//[\r\n])/g,“”,//删除所有换行符 tdata=str.split(“,”), imgaray=[]
$.each(tdata, function(i, item) {
var match = item.match(/~(.*?)\.jpg/)[1];
imgArray.push(match);
});
//shuffle now if desired
}
});
您也可以只写:
var imgArray = data.match(/~(.*?)\.jpg/g);
为什么不直接使用String
split
而不是regex
for (var i = 0;i < imgArray.length; i++) {
imgArray[i] = imgArray[i].split('?')[0];
}
for(变量i=0;i
SejQuery.each
Javascript没有引用,因此在迭代数组时不能更改数组元素的值
因此,您要做的是创建另一个数组,并在迭代时将值推入其中:
var dst = [];
$.each(imgArray, function(i, item) {
dst.push(item[0].match(/~(.*?)\.jpg/g, "$1")[1]);
});
这似乎起到了作用:
var s = "~/TestImages/media/9.jpg?width=443&height=388&ext=.jpg?id=92, \
~/TestImages/media/8.jpg?width=506&height=337&ext=.jpg?id=91, \
~/TestImages/media/jpeg-3.jpg?width=720&height=480&ext=.jpg?id=75, \
~/TestImages/media/4.jpg?width=725&height=483&ext=.jpg?id=77, \
~/TestImages/media/7.jpg?width=957&height=629&ext=.jpg?id=81, \
~/TestImages/media/10.jpg?width=478&height=356&ext=.jpg?id=85";
var sa = s.split(",");
for(var i=0; i < sa.length;i++) {
var first = sa[i].indexOf("/");
var last = sa[i].indexOf("?");
sa[i] = sa[i].substring(first, last);
}
console.log(sa);
var s=“~/TestImages/media/9.jpg?宽度=443,高度=388,外部=.jpg?id=92\
~/TestImages/media/8.jpg?宽度=506,高度=337,外部=.jpg?id=91\
~/TestImages/media/jpeg-3.jpg?宽度=720,高度=480,外部=.jpg?id=75\
~/TestImages/media/4.jpg?宽度=725,高度=483,外部=.jpg?id=77\
~/TestImages/media/7.jpg?宽度=957,高度=629,外部=.jpg?id=81\
~/TestImages/media/10.jpg?宽度=478,高度=356,外部=85”;
var sa=s.split(“,”);
对于(变量i=0;i
您可以在此处使用此代码: