我对编码 html/js 很陌生。我在此处检查了答案,但要么不能很好地理解它们,要么它们不是我要找的东西。
问题很简单;如果我有以下对象;
var gadget = {"1":{"id":A, "name":"Rawr"},"2":{"id":B, "name":"GoGoGadget"}"1":{"id":C, "name":"Extendable Arms!"}};
现在,如果我想使用 forloop(无论出于何种原因)来提取我想尝试的这些对象的名称;
var i = 0;
var names = [];
for (i = 0; i < gadget.length; i++) {
names.push(gadget.i.name);
}
对于这行不通我并不感到惊讶,因为“i”在这里可能被解释为字符串“i”而不是数字。不幸的是,我尝试了一些我在网上找到的变体(比如使用 names.push(gadget[i].name) 这也不应该工作,因为这表明 gadget 是一个向量而不是一个对象)但是没有能够弄清楚如何让它发挥作用。
有什么地方可以找到这种语法吗?还是这是看起来应该很容易但 js 真的没有很好的解决方案的事情之一?
谢谢!
编辑:
我并不是说我总是想要向量中的 every 条目,所以为了进一步澄清我的问题,如果我想使用 forloop 只查找给定的小工具条目的名称怎么办在另一个对象中;即给出;
var searchvec = [{"id":1,"count":17},{"id":3,"count":12}];
var i = 0;
var names = [];
for (i = 0; i < searchvec.length; i++) {
index = searchvec.i.id;
names.push(gadget.index.name);
}
最佳答案
我想这就是您要找的:
var gadget = {"1": {"id": "A", "name": "Rawr"}, "2": {"id": "B", "name": "GoGoGadget"}, "3": {"id": "C", "name": "Extendable Arms!"}};
let names = [];
for (let i in gadget) {
// i is String
names.push(gadget[i].name);
}
for (let i in names) {
// i is int value
console.log(names[i]);
}
无论是对象还是数组,使用 for (let x IN o) js 都会为您处理。 对于数组,for 循环将循环遍历数组索引,x 是一个 int 值,对于对象,它将循环遍历对象的属性,x 是属性名称。
参见引用资料: MDN
关于javascript - 在对象中使用变量作为引用水平,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47818111/