【问题标题】:how display data from two objects using for loop in javascript如何在javascript中使用for循环显示来自两个对象的数据
【发布时间】:2020-04-06 11:01:57
【问题描述】:

我创建了两个对象来显示帐号和可用余额 帐号正在显示帐号,但是当我尝试使用内部 for 循环显示可用余额时,仅显示最后一个值,请任何人帮助我。

数据将显示为屏幕截图

var acctInfo = [
{
"acctNum": "AAA - 1234",
"user": "Alice"
},
{
"acctNum": "AAA - 5231",
"user": "Bob"
}];

var balances = {
 "AAA-1234": 4593.22,
 "AAA-9921": 0
}

function bankinfo(){
  for(var i=0; i<acctInfo.length; i++){ 
    
    var div = document.createElement('div');
    div.setAttribute('class', 'border-bottom p-3 mx-2');
    var h5 = document.createElement('h5');
    h5.setAttribute('class', 'd-inline text-primary');  
    var h6 = document.createElement('h6');
    h6.setAttribute('class', 'float-right d-inline');
    div.appendChild(h5);
    div.appendChild(h6);

    h5.innerHTML = acctInfo[i].acctNum; 
     var result = Object.values(balances);       
    // Printing values 
    for(var j = 0; j < result.length; j++) { 
         h6.innerHTML = "$"+result[j];    
    }  
  document.querySelector('.main-card').appendChild(div);
  } 
  
}
bankinfo();
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"/>

<main class="col-5 m-2 p-0 main-card" id="data-content">
   <div class="bg-light border-bottom p-3">
     <h5 class="d-inline">Account</h5>
     <h5 class="float-right d-inline">Available Cash  </h5>
   </div>   
  </main>

【问题讨论】:

  • 让我看看...在你的对象中我注意到一个错误不匹配键->值对。例如 AAA-5231 > AAA-9921 。只是错误还是您只需要打印 acctInfo 中的那个项目,其值包含第二个对象的键

标签: javascript for-loop object


【解决方案1】:

const acctInfo = [
  {
    acctNum: "AAA-1234",
    user: "Alice",
  },
  {
    acctNum: "AAA-5231",
    user: "Bob",
  },
];

const balances = {
  "AAA-1234": 4593.22,
  "AAA-5231": 0,
};

function bankinfo() {
  acctInfo.forEach((item) => {
    const div = document.createElement("div");
    const h5 = document.createElement("h5");
    const h6 = document.createElement("h6");

    div.setAttribute("class", "border-bottom p-3 mx-2");
    h5.setAttribute("class", "d-inline text-primary");
    h6.setAttribute("class", "float-right d-inline");
    
    h5.textContent = item.acctNum;
    h6.textContent = balances[item.acctNum];

    div.appendChild(h5);
    div.appendChild(h6);

    document.querySelector(".main-card").appendChild(div);
  });
}
bankinfo();
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"/>

<main class="col-5 m-2 p-0 main-card" id="data-content">
   <div class="bg-light border-bottom p-3">
     <h5 class="d-inline">Account</h5>
     <h5 class="float-right d-inline">Available Cash  </h5>
   </div>   
</main>

如果两个对象都有正确的记录,则不需要第二个循环

如果你还想......你可以这样做

const result = Object.keys(balances);
 result.forEach(x => {
    if(item.acctNum.toLowerCase() === x.toLowerCase()) {
       h6.innerHTML = "$"+balances[x];
    }
 });

【讨论】:

    猜你喜欢
    • 2018-06-24
    • 2021-12-13
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    相关资源
    最近更新 更多