我对编码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);
}
答案 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)
}