将变量用作对象

时间:2017-12-14 16:32:33

标签: 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 = [];
for (i = 0; i < gadget.length; i++) {
   names.push(gadget.i.name);
}

我并不感到惊讶,因为“i”可能会被解释为字符串“i”而不是数字。不幸的是我尝试了一些我在网上找到的变种(比如使用names.push(gadget [i] .name),这也不应该起作用,因为这表明gadget是一个向量而不是一个对象)但是没有能够弄明白如何让它发挥作用。

有什么地方我可以找到这种语法吗?或者这些事情看起来应该很容易,但是js真的没有一个很好的解决方案吗?

谢谢!

修改

我并不是说我总是想要向量中的每个条目,所以为了进一步澄清我的问题,如果我想使用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);
}

3 个答案:

答案 0 :(得分:1)

我认为这就是你要找的东西:

   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

答案 1 :(得分:0)

Javascript是一种非常古怪的语言,如果你习惯了更严格的语言,可能会给你带来严重的麻烦。在js中,数组实际上是一个对象,其中数字为键+其他一些好东西(例如push()方法)(要查看它,您可以在控制台中尝试:typeof []))

P.S。这意味着您实际上可以访问对象属性,obj[key]是键变量,甚至是空值。

答案 2 :(得分:0)

您可以执行以下操作:

var names = []; 
for (let [key,value] of Object.entries(gadgets)){
    names.push(value)
}