我有两个字符串数组:hrefs
,thumbs
。需要将此数组组合成另一个具有如下结构的数组。怎么做 ?为清楚起见 - 我需要使用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]};
});
答案 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 ] };
});