我想将10个不同的对象传递到一个函数(logObjekt)中,以便我可以console.log在所有对象中设置的属性名称。
我不必使用10行代码来实现此目的,而是使用for循环来增加将要传递给函数的每个名称,而是使之成为可能,因为所有对象均以“ objekt”开头。
当我调试此程序时,一切看起来都很好,并且当JS强制将int字符串化并合并两者时,我得到的结果为“ object1,object2 ...依此类推”。因此,乍一看,我以为我有一个很好的解决方案,但是当我实现该解决方案时,我得到了10倍的未定义值,而不是对象中的10个值。
var objekt1 = { "name": "value1" };
var objekt2 = { "name": "value2" };
var objekt3 = { "name": "value3" };
var objekt4 = { "name": "value4" };
var objekt5 = { "name": "value5" };
var objekt6 = { "name": "value6" };
var objekt7 = { "name": "value7" };
var objekt8 = { "name": "value8" };
var objekt9 = { "name": "value9" };
var objekt10 = { "name": "value10" };
var i;
for (i = 0; i < 10; i++) {
logObjekt("objekt" + i);
};
function logObjekt(objekt) {
console.log(objekt.name)
};
我希望在称为“名称”的对象中记录属性。
现在实际结果是未定义的10倍。
答案 0 :(得分:2)
要访问具有变量名的全局变量,您可以可以(但您不应这样做,请参见下面的第一个代码片段)使用方括号语法。
var objekt1 = {
"name": "value1"
};
var objekt2 = {
"name": "value2"
};
var objekt3 = {
"name": "value3"
};
var objekt4 = {
"name": "value4"
};
var objekt5 = {
"name": "value5"
};
var objekt6 = {
"name": "value6"
};
var objekt7 = {
"name": "value7"
};
var objekt8 = {
"name": "value8"
};
var objekt9 = {
"name": "value9"
};
var objekt10 = {
"name": "value10"
};
var i;
for (i = 1; i < 10; i++) {
logObjekt(window["objekt" + i]);
};
function logObjekt(objekt) {
console.log(objekt.name)
};
请注意,我展示此内容只是为了显示在需要时如何做。
绝不是 您这样做的。正如其他人已经提到的,将对象放入数组中:
var objekt = [{
"name": "value1"
}, {
"name": "value2"
}, {
"name": "value3"
}, {
"name": "value4"
}, {
"name": "value5"
}, {
"name": "value6"
}, {
"name": "value7"
}, {
"name": "value8"
}, {
"name": "value9"
}, {
"name": "value10"
}]
for (var i = 0; i < objekt.length; i++) {
logObjekt(objekt[i]);
};
function logObjekt(objekt) {
console.log(objekt.name)
};
答案 1 :(得分:1)
您需要创建一个对象数组并将其推入该数组,以遍历对象并打印出name属性。
var objectlist = [];
objectlist.push({ "name": "value1"});
objectlist.push({ "name": "value2"});
for(var i = 0; i < objectlist.length; i++)
{
logObjekt(objectlist[i]);
}