Javascript 将两个数组合并为选项数组

Javascript 将两个数组合并为选项数组,javascript,jquery,Javascript,Jquery,我有两个字符串数组:hrefs,thumbs。需要将此数组组合到另一个具有如下结构的数组中。怎么做?为了清楚起见,我需要使用调用函数Lightview.show(elements),其中elements是我需要构建的结果数组 HTML: 所需的结果数组(元素): 我从这开始,但我认为这是错误的 var e = new Array(); $.each(hrefs, function(i, value) { e[i] = new Array(); e[i][0] = value;

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

HTML:

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

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

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

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

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

var result = {};

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

var result = {};

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

你快到了。只要做:

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]} ];
});

你快到了。只要做:

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]} ];
});

你在找这样的东西吗

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')
    }
}
var lvs=$('.lv'); var arr={}; 对于(i=0;i你在找这样的东西吗

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')
    }
}
var lvs=$('.lv'); var arr={}; 对于(i=0;i您想要的结果不是有效的Javascript/JSON结构。你能澄清一下你在寻找什么吗?这个结构有什么问题吗?@marioosh你能给出一个具体的例子,说明你到目前为止展示的代码所需要的输出吗?我不太关心确切的有效语法。我只是不清楚所需的数据结构是什么。您所寻找的东西不可能存在于javascript中。对象的格式必须为
{name:value}
。。。您不能有
{{name:value}
。您可以执行
{name1:{name2:value}}
。您想要的结果不是有效的Javascript/JSON结构。你能澄清一下你在寻找什么吗?这个结构有什么问题吗?@marioosh你能给出一个具体的例子,说明你到目前为止展示的代码所需要的输出吗?我不太关心确切的有效语法。我只是不清楚所需的数据结构是什么。您所寻找的东西不可能存在于javascript中。对象的格式必须为
{name:value}
。。。您不能有
{{name:value}
。您可以执行
{name1:{name2:value}}
。这可能是错误的,但我确信您必须使用括号表示法才能使代码正常工作<代码>变量o={};o[$(this.attr('href')]={thumb:…};返回o还是不?我以前也这么做过,看起来你应该能够。。。通常,如果可读性足够好,您可以将代码缩减为一行,例如
函数func(o){return o={},o['foo']={a:'baz'},o;}
可能是错误的,但我很确定您必须使用括号表示法才能使代码正常工作<代码>变量o={};o[$(this.attr('href')]={thumb:…};返回o还是不?我以前也这么做过,看起来你应该能够。。。通常,如果可读性足够好的话,您可以将代码缩减为一行,比如
function func(o){return o={},o['foo']={a:'baz'},o;}
Good,+1表示普通javascript。Good,+1表示普通javascript。