Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将变量用作对象中的参照标高_Javascript_Variables_For Loop - Fatal编程技术网

Javascript 将变量用作对象中的参照标高

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 = []

我对编写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);
}
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补充道