将数组值链接到其他数组并在Javascript中推送到新数组

时间:2017-10-08 13:45:54

标签: javascript arrays

我正在尝试循环遍历整数数组并将每个值“link / map”排序到存储在另一个数组中的图像URL(然后将新数据推送到新数组中)。

我尝试过使用带有indexOf方法的For循环,但似乎没有用。

另外,重要的是要注意我的arrayOfInteger中没有一次数据,我需要将每个值链接到它的图像等价物。

这是我的代码段:

var images = [];

var arrayOfInteger = [1, 16, 10, 8, 13, 9, 19, 12, 5, 18, 9, 1, 17, 7, 18, 16, 9, 5, 19, 10, 0, 13, 3, 2, 12];

var imgData = [
        [0, 'img/0.svg'],
        [1, 'img/1.svg'],
        [2, 'img/2.svg'],
        [3, 'img/3.svg'],
        [4, 'img/4.svg'],
        [5, 'img/5.svg'],
        [6, 'img/6.svg'],
        [7, 'img/7.svg'],
        [8, 'img/8.svg'],
        [10, 'img/10.svg'],
        [11, 'img/11.svg'],
        [12, 'img/12.svg'],
        [13, 'img/13.svg'],
        [15, 'img/15.svg'],
        [16, 'img/16.svg'],
        [17, 'img/17.svg'],
        [18, 'img/18.svg'],
        [19, 'img/19.svg'],
    ]

 function pushImages() {
        for(var i=0;i<arrayOfInteger.length;i++){
             if(imgData.indexOf(grades[i])!= -1){images.push(imgData[i][1]);}
          }
    }

我也想知道......我使用好方法来实现我想要的吗?

编辑:

最后,我希望images数组包含这些网址(基于arrayOfInteger的整数值):

images = ['img/1.svg', 'img/16.svg', 'img/10.svg', 'img/8.svg', 'img/13.svg', 'img/9.svg', 'img/19.svg', 'img/12.svg', 'img/5.svg', 'img/18.svg', 'img/9.svg', 'img/1.svg', 'img/17.svg', 'img/7.svg', 'img/18.svg', 'img/16.svg', 'img/9.svg', 'img/5.svg', 'img/19.svg', 'img/10.svg', 'img/0.svg', 'img/13.svg', 'img/3.svg', 'img/2.svg', 'img/12.svg']

因为我想根据arrayOfInteger给我的内容在界面中显示图像。此阵列经常从服务器更新。

4 个答案:

答案 0 :(得分:0)

{{1}}
你正在寻找类似的东西吗?

答案 1 :(得分:0)

此处唯一可以处理数据的答案 - 只需最少的修改!

function pushImages() {
    // Clear images if preferred
    images = [];

    for (var i = 0; i < arrayOfInteger.length; i++){
        var data = imgData.find(function (data) {
            return data[0] == arrayOfInteger[i]
        });
        if (data) { images.push(data[1]); }
    }
}

答案 2 :(得分:-2)

你的整个例子可以大大减少:

for(var i=0; i < arrayOfInteger.length; i++){
    var imgData = 'img/' + arrayOfInteger[i] + '.svg'
}

请注意,此处唯一的数组是arrayOfIntegerimgData数组完全没必要。当你看到这样的重复时,你应该总是想办法减少你必须要做的打字或复制/粘贴的数量。

答案 3 :(得分:-4)

使用下划线:

var images = [];
var arrayOfInteger = [1, 16, 10, 8, 13, 9, 19, 12, 5, 18, 9, 1, 17, 7, 18, 16, 9, 5, 19, 10, 0, 13, 3, 2, 12];
var imgData = [
    [0, 'img/0.svg'],
    [1, 'img/1.svg'],
    [2, 'img/2.svg'],
    [3, 'img/3.svg'],
    [4, 'img/4.svg'],
    [5, 'img/5.svg'],
    [6, 'img/6.svg'],
    [7, 'img/7.svg'],
    [8, 'img/8.svg'],
    [10, 'img/10.svg'],
    [11, 'img/11.svg'],
    [12, 'img/12.svg'],
    [13, 'img/13.svg'],
    [15, 'img/15.svg'],
    [16, 'img/16.svg'],
    [17, 'img/17.svg'],
    [18, 'img/18.svg'],
    [19, 'img/19.svg'],
]
_.each(imgData, function(t){
   var o = _.indexOf(arrayOfInteger, t[0]);
   if (o != -1) {
        images.push(t[1]);
   }
});