javascript - 在对象中使用变量作为引用水平

标签 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 真的没有很好的解决方案的事情之一?

谢谢!

编辑:

我并不是说我总是想要向量中的 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/

相关文章:

javascript - 在 javascript 中准确地转义 HTML 实体

javascript - 将文本框传输到文本区域时附加新行(JQuery)

JavaScript For 循环数组迭代问题 - 使用一个循环与两个循环

Python根据条件查找数组中的索引

Javascript:多个复选框调用一个函数

javascript - 在 Woocommerce 中嵌入带有交易 ID 的 clickwork7 跟踪代码

javascript - 将 Javascript 变量传递给 Objective-C

javascript - 将数组中的每个项目与数组的其余部分进行比较的最快方法?

javascript - 在顶部定义每个变量总是最好的方法吗?

python - 使用 python 设置 apache 服务器范围的变量