从“for of”循环输出创建数组

Create an array from 'for of' loop outputs

提问人:C Dub 提问时间:9/28/2022 最后编辑:Htet Oo Wai YanC Dub 更新时间:9/28/2022 访问量:149

问:

我在 JS 中有一个返回 HTML 元素 id 的语句,但它们位于多个输出中。我想获取这些输出并将它们放在一个数组中。for of

例如,HTML 是:

<div>
    <button id="savebtn-1"></button>
</div>
<div>
    <button id="savebtn-2"></button>
</div>

我的JS是:

const elements = document.querySelectorAll("button");
for (const element of elements) {
    let id = elements.getAttribute("id");
}

console.log(id)将显示:

保存BTN-1

保存BTN-2

如何将这些输出放入数组中?

感谢您对这个问题的关注。

JavaScript 数组 for-of-loop

评论

3赞 Teemu 9/28/2022
你已经在列表中有了元素,为什么要弄乱ids..?
0赞 C Dub 9/28/2022
这些按钮将文本区域值保存到本地存储中。我有九个按钮,所有九个按钮都在为此工作。我只是为每个按钮编写的愚蠢的冗余量。我想以迭代方式将事件侦听器应用于每个按钮。
0赞 C Dub 9/28/2022
我认为遍历数组将实现这一点
2赞 Teemu 9/28/2022
嗯......您可以迭代 NodeList,并添加事件侦听器。听起来你可以通过使用事件委托来使你的代码变得简单得多。ID 旨在用于彼此之间没有任何关系的元素,这些保存按钮更像是一类按钮。
1赞 C Dub 9/29/2022
Teemu,我真的很感谢你抽出时间。你给了我很多东西要咀嚼。在这个领域,我是一个精神婴儿,但我正在享受成长的痛苦。你震撼了我的朋友!继续让世界变得更美好。

答:

1赞 Phil 9/28/2022 #1

使用 Array.from() 和自定义映射器来提取 IDNodeList

const idArray = Array.from(
  document.querySelectorAll("button"),
  ({ id }) => id
);

console.log(idArray);
<div>
  <button id="savebtn-1">Button #1</button>
</div>
<div>
  <button id="savebtn-2">Button #2</button>
</div>

评论

0赞 C Dub 9/28/2022
谢谢一堆菲尔!我之前非常接近这个解决方案,但不知何故我得到了九个单个数组,例如:[“savebtn-1”] [“savebtn-2”] 等等。
0赞 Yogi 9/28/2022
这将是首选解决方案,即使问题具体询问如何使用“for of”循环来做到这一点。+1
1赞 Htet Oo Wai Yan 9/28/2022 #2

您可以创建一个空数组并将 s 入该数组。id

const elements = document.querySelectorAll("button");

const idArray = [];

for (const element of elements) {
    let id = elements.getAttribute("id");
    idArray.push(id);
}

console.log('idArray ', idArray);
3赞 John Mack 9/28/2022 #3

创建另一个数组并将所有 id 存储在该数组中。

const resultArray = [];
const elements = document.querySelectorAll("button");

for (const element of elements) {
    const id = element.getAttribute("id");
    resultArray.push(id);
}
console.log(resultArray);
<div>
<button id = "savebtn-1">Button 1</button>
</div>
<div>
<button id = "savebtn-2">Button 2</button>
</div>

评论

0赞 C Dub 9/28/2022
你摇滚麦克先生!超级乐于助人
0赞 Yogi 9/28/2022
该问题要求使用“for of”循环的解决方案。所以这是正确的答案,即使有其他(更好的)方法可以在没有for循环的情况下做到这一点。+1
0赞 C Dub 9/29/2022
谢谢瑜伽士。我有一位主管告诉我,我喜欢以艰难的方式做事......是的。感谢您关注问题的上下文。