创建对象数组后如何更新对象的键值?的JavaScript

时间:2020-06-05 15:01:27

标签: javascript

我有一些简单的东西,但是我显然太愚蠢了。

我在HTML中有两个输入。第一是公司,第二是股份。我正在与公司一起创建UL。要做的是,当我输入阵列中已经存在的公司名称时,我只想更新该公司的股份。我将分享到目前为止的代码。

  <body>
    <form>
      <input id="company" placeholder="Company" type="text" />
      <input id="input" placeholder="Shares" type="number" />
      <button id="btn">Add</button>
    </form>
    <ul id="content"></ul>
  </body>

JavaScript代码在这里:

const button = document.getElementById("btn");
const content = document.getElementById("content");

let companiesArray = [];

function myCompany(e) {
  e.preventDefault();
  const inputShares = document.getElementById("input").value;
  const inputCompany = document.getElementById("company").value;
  let obj = {
    company: inputCompany,
    shares: inputShares,
  };
  for (const item of companiesArray) {
    if (item.company === obj.company) {
      //TO DO
      console.log("Match");
      return;
    }
  }
  const li = document.createElement("li");
  content.appendChild(li).textContent = `${obj.company} - ${obj.shares}`;
  companiesArray = [...companiesArray, obj];
  console.log(companiesArray);
}

button.addEventListener("click", myCompany);

同样,当我输入一个唯一的公司=>在ul中创建了li。如果我进入同一家公司,我只想更新股份而不添加新的权限。

1 个答案:

答案 0 :(得分:0)

if (item.company === obj.company) {
        //TO DO
        const list = document.getElementsByTagName('li')
        const element = [...list].filter((item) => item.innerText.split(" ")[0] === obj.company)[0]
        element.innerText = `${obj.company} - ${obj.shares}`
        console.log("Match");
        return;
      }

希望这会有所帮助:)