如何将一个对象放入另一个对象中?

3
我正在开发一个收益网站。因此,我需要添加像“鱼类”这样的部分,并在该部分内添加一些收益。
所以,我初始化了一个列表(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;
    }

所以我希望将收入名称放在“section”中,将成本放在收入名称中。

然后我可以将其他收入放入“section”,依此类推。

1个回答

3

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

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


但是,在这种情况下,我可以添加无限的收入吗? - José Miranda
@JoséMiranda 请查看更新的帖子。在这种情况下,收入将再次成为对象数组。 - Sushanth --
还有一个问题:我如何在这个对象上放置一份配料清单?我有这个列表:listIngredients = [];我想把这个列表放到部分列表中。 - José Miranda
这将与“收入”完成方式非常相似。 - Sushanth --

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接