我有一些具有变量1-9的Javascript代码,我觉得可以更有效地编写?使用某种循环?
这是我的代码片段,看起来非常草率和效率低下。是否有更好的方法来循环连续变量?
编辑:
我最后只使用For循环为每个变量创建单独的数组:
var num = []
for (var i = 0; i < imgAr.length; ++i) {
num[i] = Math.floor(Math.random() * imgAr.length)
}
var img = []
for (var j = 0; j < imgAr.length; ++j) {
img[j] = imgAr[ num[j] ]
}
var imgStr = []
for (var k = 0; k < imgAr.length; ++k) {
imgStr[k] = '<img src="' + path + img[k] + '" alt = "">'
}
&#13;
var num1 = Math.floor( Math.random() * imgAr.length );
var num2 = Math.floor( Math.random() * imgAr.length );
var num3 = Math.floor( Math.random() * imgAr.length );
var num4 = Math.floor( Math.random() * imgAr.length );
var num5 = Math.floor( Math.random() * imgAr.length );
var num6 = Math.floor( Math.random() * imgAr.length );
var num7 = Math.floor( Math.random() * imgAr.length );
var num8 = Math.floor( Math.random() * imgAr.length );
var num9 = Math.floor( Math.random() * imgAr.length );
var img1 = imgAr[ num1 ];
var img2 = imgAr[ num2 ];
var img3 = imgAr[ num3 ];
var img4 = imgAr[ num4 ];
var img5 = imgAr[ num5 ];
var img6 = imgAr[ num6 ];
var img7 = imgAr[ num7 ];
var img8 = imgAr[ num8 ];
var img9 = imgAr[ num9 ];
var imgStr1 = '<img src="' + path + img1 + '" alt = "">';
var imgStr2 = '<img src="' + path + img2 + '" alt = "">';
var imgStr3 = '<img src="' + path + img3 + '" alt = "">';
var imgStr4 = '<img src="' + path + img4 + '" alt = "">';
var imgStr5 = '<img src="' + path + img5 + '" alt = "">';
var imgStr6 = '<img src="' + path + img6 + '" alt = "">';
var imgStr7 = '<img src="' + path + img7 + '" alt = "">';
var imgStr8 = '<img src="' + path + img8+ '" alt = "">';
var imgStr9 = '<img src="' + path + img9 + '" alt = "">';
&#13;
答案 0 :(得分:3)
使用函数和数组:
function randIndex(){
return Math.floor( Math.random() * imgAr.length );
}
const nums = Array.from({length:9}, randIndex);
function getImage(index){
return '<img src="' + path + imgAr[index] + '" alt = "">';
}
const imgs = nums.map( getImage );
答案 1 :(得分:1)
您可以使用简单的循环和数组。但是,结果是九个长度数组而不是九个变量:
var imgStr = [];
for (i = 1; i <= 9; i++) {
var num = Math.floor( Math.random() * imgAr.length );
imgStr[i] = '<img src="' + path + imgAr[num] + '" alt = "">';
}