Javascript 我应该更改数组中的字符串吗?

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

我从一个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, 
~/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
Se
jQuery.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
您可以在此处使用此代码: