首页 > 解决方案 > 如何将对象放入对象内部

问题描述

我正在做一个收入网站。所以我需要放像鱼部分这样的部分,在那个部分里面我放了一些收入。

因此,我初始化了一个列表list = []list[0] = {"name" = name}

function showSection() {
      tb = "";

      for (let key in list) {

tb += "<details><summary><h3>" + list[key]["name"] + "</h3></summary>";
        tb += "<input type=\"button\" name=\"addRevenue\" id=\"addRevenue\" value=\"Add revenue\" onclick=\"ask_revenue(" + key + ");\">"
        tb += "<div>List of revenue of the section " + list[key]["name"] + ".</div>"
        tb += "<div id=\"list" + key + "\"></div><br>"
        tb += "</details>";

      }
      document.getElementById("list").innerHTML = tb;
    }

//所以在添加部分之后,我想用这段代码添加收入:

function addRevenue() {
      var nameRevenue, cost;
      nameRevenue = document.getElementById("name_Revenue").value;
      cost = document.getElementById("cost").value;

      list[indexOfRevenue]["name"] = {
        "nameRevenue": nameRevenue
      }

      list[indexOfRevenue]["name"]["nameRevenue"] = {
        "cost": cost,
      };

      ta += "<div>Name of revenue: " + list[indexOfRevenue]["name"]["nameRevenue"] + ".</div>"
      ta += "<div>Cost: " + list[indexOfRevenue]["name"]["nameRevenue"]["cost"] + ".</div>"
      document.getElementById("list" + indexOfRevenue).innerHTML = ta;
    }

因此,我预计将收入的名称放入该部分,并将成本放入收入的名称中。

然后我可以将其他收入放入部分,依此类推。

标签: javascriptjavascript-objects

解决方案


数组中的每一项都已经是一个对象。您可以只在该对象上指定一个新属性并设置该值。

function addRevenue() {
  var nameRevenue, cost;
  nameRevenue = document.getElementById("name_Revenue").value;
  cost = document.getElementById("cost").value;

  if (list[indexOfRevenue]['revenues'] === undefined) {
    list[indexOfRevenue]['revenues'] = [];
  }

  var revenue = {
    nameRevenue: nameRevenue,
    cost: cost
  };

  list[indexOfRevenue]['revenues'].push(revenue);

  for (var i = 0; i < list[indexOfRevenue]['revenues'].length; i++) {
    var currentRevenue = list[indexOfRevenue]['revenues'][i];
    ta += "<div>Name of revenue: " + currentRevenue.nameRevenue + ".</div>"
    ta += "<div>Cost: " + currentRevenue.cost + ".</div>"
  }


  document.getElementById("list" + indexDaReceita).innerHTML = ta;
}

// Your object looks like this

let obj = [{
  name: 'Tom',
  revenues: [{
    nameRevenue: '600',
    cost: '1000'
  }, {
    nameRevenue: '250',
    cost: '400'
  }]
}];


推荐阅读