0

文字列の 2 つの配列があります: hrefs, thumbs. この配列を以下のような構造を持つ別の配列に結合する必要があります。どうやってするか ?わかりやすくするために、Lightview APIを使用して function を呼び出す必要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

4 に答える 4

2

これのことですか?

var result = $('.lv').map(function() {
    var o = {};
    o[$(this).attr('href')] = { thumbnail: $(this).attr('thumbnail') } };
    return o;
}).get();
于 2013-01-25T07:13:49.807 に答える
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')
    }
}
于 2013-01-25T07:17:13.083 に答える
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]} ];
});
于 2013-01-25T07:16:22.657 に答える
0

これを試して

var result = {};

$.each( hrefs, function ( index ) {
    result[ hrefs[ index ] ] = { thumbnail: thumbs[ index ] };
});
于 2013-01-25T07:14:02.803 に答える