列出Javascript中类似的多个变量的更有效方法是什么?

时间:2017-09-11 15:38:04

标签: javascript variables

我有一些具有变量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;
&#13;
&#13;

&#13;
&#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;
&#13;
&#13;

2 个答案:

答案 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 = "">';
}