将两个数组组合成选项数组

时间:2013-01-25 07:10:06

标签: javascript jquery

我有两个字符串数组:hrefsthumbs。需要将此数组组合成另一个具有如下结构的数组。怎么做 ?为清楚起见 - 我需要使用Lightview API来调用函数Lightview.show(elements),其中元素是我需要构建的结果数组。

HTML:

<a href="/one" class="lv" thumbnail="one.jpg">one</a>
<a href="/two" class="lv" thumbnail="two.jpg">two</a>
<a href="/three" class="lv" thumbnail="three.jpg">three</a>

阵列:

var hrefs = $('.lv').map(function() { return $(this).attr('href'); }).get();
var thumbs = $('.lv').map(function() { return $(this).attr('thumbnail'); }).get();

所需的结果数组(元素):

{
    {hrefs[0], 
        {
           thumbnail: thumbs[0]   
        }
    },
    {hrefs[1],
        {
           thumbnail: thumbs[1]   
        }
    },
    ...
}

我从这开始,但我认为这是错误的......

var e = new Array();
$.each(hrefs, function(i, value) {
    e[i] = new Array();
    e[i][0] = value;
    e[i][1] = {thumbnail: thumbs[i]};
});

4 个答案:

答案 0 :(得分:2)

你是说这个吗?

var result = $('.lv').map(function() {
    var o = {};
    o[$(this).attr('href')] = { thumbnail: $(this).attr('thumbnail') } };
    return o;
}).get();

答案 1 :(得分:2)

你在找这样的东西吗?

var hrefs = $('.lv').map(function() { return $(this).attr('href'); }).get();
var thumbs = $('.lv').map(function() { return $(this).attr('thumbnail'); }).get();

var arr = {};
for (i in hrefs) {
    arr[hrefs[i]] = {
        thumbnail: thumbs[i]
    }
}

另一个建议,最少使用JQuery来加快执行速度

var lvs = $('.lv');
var arr = {};
for (i=0; i< lvs.length; i++) {
    arr[lvs[i].getAttribute('href')] = {
        thumbnail: lvs[i].getAttribute('thumbnail')
    }
}

答案 2 :(得分:1)

你快到了。只是做:

var e = [];
$.each(hrefs, function(i, value) {
    e[i] = [];
    e[i] = [ value, {thumbnail: thumbs[i]} ];
});

甚至更短:

var e = [];
$.each(hrefs, function(i, value) {
    e[i] = [ value, {thumbnail: thumbs[i]} ];
});

答案 3 :(得分:0)

试试这个

var result = {};

$.each( hrefs, function ( index ) {
    result[ hrefs[ index ] ] = { thumbnail: thumbs[ index ] };
});