Javascript 将变量用作对象中的参照标高
我对编写html/js非常陌生。我在这里检查了答案,但要么是理解得不够好,要么不是我想要的 这个问题很直截了当;如果我有以下目标Javascript 将变量用作对象中的参照标高,javascript,variables,for-loop,Javascript,Variables,For Loop,我对编写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 = []
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);
}
var i=0;
变量名称=[];
对于(i=0;i
我并不奇怪这不起作用,因为这里的“I”可能会被解释为字符串“I”,而不是数字。不幸的是,我尝试了一些在网上发现的变体(比如使用names.push(gadget[I].name),这也不应该起作用,因为这表明gadget是一个向量,而不是一个对象),但我还没有弄清楚如何让它起作用
有什么地方可以找到这种语法吗?或者这是一件看起来应该很简单但js并没有很好的解决方案的事情吗
谢谢
编辑:
我并不是说我总是想要向量中的每个条目,所以为了进一步澄清我的问题,如果我想使用forloop只查找另一个对象中给定的gadget条目的名称,该怎么办;即给予
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 searchvec=[{“id”:1,“count”:17},{“id”:3,“count”:12}];
var i=0;
变量名称=[];
对于(i=0;i
Javascript是一种非常古怪的语言,如果您习惯于使用更严格的语言,它可能会给您带来严重的麻烦。在js中,数组实际上是一个以数字为键的对象+一些其他好东西(例如push()
方法)(要查看它,您可以在控制台中尝试:typeof[]
)
注意:这意味着您实际上可以使用
obj[key]
作为变量的键来访问对象属性,即使是空值。您可以执行以下操作:
var names = [];
for (let [key,value] of Object.entries(gadgets)){
names.push(value)
}
我想这就是你想要的:
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(让x在o中)js都会让您放心。
对于数组,for循环将循环遍历数组索引,x是一个int值,对于对象,它将循环遍历对象的属性,x是属性名
见参考资料:
第一步:了解您使用的编程语言。:-)很明显,您使用的是JavaScript,而不是Java。我已经为您修复了标记代码>行的语法无效。你是说
var-gadget={“1”:{/*…*/},“2”:{/*…*/},“1”:{/*…*/}代码>?如果是这样,请注意属性名1
是重复的(最后一个将获胜)。没有更好的信息,我们帮不了你。请用一个演示问题的例子来更新你的问题,最好是一个使用堆栈片段的可运行的问题([]
工具栏按钮;)。@TJ呜呜,完全输入了这两个hah谢谢;我想我已经修好了。我现在尝试添加一个完整的代码片段。你能解释一下“让我加入gadget”行与for循环有什么不同吗?它是否将“i”指定为实际的对象键,而不仅仅是一个迭代变量?@Jason补充道