【问题标题】:How to dynamically create an object property & assign values using a for loop如何使用 for 循环动态创建对象属性并赋值
【发布时间】:2021-07-29 19:58:01
【问题描述】:

请有人教我如何在给定的场景中正确地为对象属性赋值:

我正在获取文本区域的值,并将值拆分为新行。我需要将这些拆分值分配给数组中对象的属性。见以下代码:

var items = [{}];

function process() {
    var i = 0;
    items.forEach((j) => {
        j.self = document.getElementById('input').value.split('\n');
    });

点击按钮时调用process()。

在控制台中,我得到以下信息:

我需要将单个值分配给 key[0] 作为 self 属性的值,而不是 key[0] 例如将 10 个 self 值作为数组。例如,第二个拆分需要分配给 key1.self。

预期的输出将是这样的(如果不完全准确,请道歉):

items[0]{self: split-string[0]},
items[1]{self: split-string[1]},
items[2]{self: split-string[2]},

等等……

而不是(控制台中显示的):

items[0].self[0] = split-string[0];
items[0].self[1] = split-string[1];
items[0].self[2] = split-string[2];

如果有道理,请有人帮忙。

【问题讨论】:

  • 你用j++覆盖j? --- 编辑:你为什么要使用一个数字,然后附加一个属性?
  • 真的很难看到你想从分割字符串中得到什么。你能显示你的预期输出吗
  • @evolutionxbox 我删除了 j 声明和 j++,仍然是相同的输出
  • 请更新问题以向我们展示发生了什么变化?
  • @srcomptn 是的,这是有道理的——正是我的回答所产生的

标签: javascript arrays object properties


【解决方案1】:

目前还不清楚您到底想得到什么,但如果我理解正确的话,它是一个对象数组,其属性 self 包含输入中的一行。

如果这个假设是正确的,这应该有效:

document.getElementById("clickme").addEventListener("click",process);

function process(){
    const items = document.getElementById("input").value
                           .split("\n")
                           .map(line => ({self:line}));
    console.log(items);
}
<textarea id="input" rows="5">Line1
Line2
Line3
Line4</textarea>
<button id="clickme">Process</button>

【讨论】:

  • 非常抱歉我的上帝糟糕的解释,但这正是我的意思。非常感谢你
  • @srcomptn ha...没有问题,我有点明白了。
猜你喜欢
  • 2015-05-24
  • 1970-01-01
  • 2014-12-19
  • 2020-09-28
  • 2015-03-16
  • 1970-01-01
  • 2017-06-19
  • 2023-04-10
  • 2017-09-05
相关资源
最近更新 更多