迭代使用对象键嵌套的数组

Iterating an array that is nested with an object key

本文关键字:嵌套 数组 对象 迭代      更新时间:2023-09-26
var html = {
easyBB :   
['easybbtutorials','www.easybbtutorials.com','http://i76.servimg.com/u/f76/17/83/35/07/easybb10.png'],
AvacWeb:
['AvacWeb','www.avacweb.com','http://i45.servimg.com/u/f45/16/35/08/55/new_lo12.png'],
easyBB2:
['easybbtutorials','www.easybbtutorials.com','http://i76.servimg.com/u/f76/17/83/35/07/easybb10.png'],
AvacWeb2 : 
['AvacWeb','www.avacweb.com','http://i45.servimg.com/u/f45/16/35/08/55/new_lo12.png'],
easyBB3 :
['easybbtutorials','www.easybbtutorials.com','http://i76.servimg.com/u/f76/17/83/35/07/easybb10.png'],
AvacWeb3 : 
['AvacWeb','www.avacweb.com','http://i45.servimg.com/u/f45/16/35/08/55/new_lo12.png']
};
 var cont = document.getElementById('container');
  for(var key in html){
   for(var i =0;i<key.length;i++ ){
     var name= '<span class="name">'+html[key][0] +'</span>',
     link = '<span class="url"><a href="'+html[key][1]+'">'+html[key][1] +'</a></span>',
     image = '<img src="'+html[key][2]+'" title="'+html[key][0]+'" />';        
     cont.innerHTML= '<div class="wrapper">'+ name + '<br />'+image+'<br />'+link+'</div>';
      i++;
   }
 }

正在尝试迭代我创建的 HTML 对象的每个键中的数组 问题不确定如何做到这一点,我现在尝试了多种方法,我相信(因为我正在发布(我做错了这一切。我也尝试过这样做:html[key[i]][0]当然我得到一个错误,即 i 未定义。任何建议我做错了什么,截至目前,它只将一个数组发布到 html。

问题不在于迭代,而在于线条

cont.innerHTML = ...

每次循环迭代时都会替换内容,以便您只能看到最后一项("AvacWeb3"(。

将其更改为

cont.innerHTML += ...

并摆脱不需要的for (var i =0 ...循环。(杰斯菲德尔(

for(var i = 0; i < html[key].length; i++){
...

你应该做 html[key][i][0]。
而且你应该按照特雷弗说的去做,html[key].length而不是key.length。

例如,通过将html[key]分配给var currentkey来让自己变得容易,更容易跟踪。

另外,看看array.forEach,只是为了好玩;)