简体   繁体   English

如何修复此简单的Javascript“ for循环”?

[英]How do I fix this simple Javascript 'for loop'?

I have a number of Javascript objects. 我有许多Javascript对象。

I want a simple 'for loop' (in JS) that prints out the key:value pairs within each object. 我想要一个简单的“ for循环”(在JS中),在每个对象中打印出key:value对。

I've shown what I've done below (and here it is in a FIDDLE ), but the variable 'thisvar' isn't working. 我已经在下面显示了我所做的事情(这里在FIDDLE中 ),但是变量“ thisvar”不起作用。

I'm obviously missing something really simple - can you point out what it is? 我显然缺少了一些非常简单的东西-您能指出它是什么吗?

Thanks 谢谢

// declare objects
var variant1 = {};
var variant2 = {};

variant1['a'] = 'apple';
variant1['b'] = 'orange';
variant1['c'] = 'pear';

variant2['a'] = 'red';
variant2['b'] = 'green';
variant2['c'] = 'blue';

// run through each object
for (i=1; i<3; i++){
    var thisvar = variant+i;
    for(var newindex in thisvar) {
        var name = newindex;
        var contents = thisvar[newindex];
        alert(name+'='+contents);
    }
}

// declare objects
var container = {
    variant1: {}
    variant2: {}
}

container.variant1['a'] = 'apple';
container.variant1['b'] = 'orange';
container.variant1['c'] = 'pear';

container.variant2['a'] = 'red';
container.variant2['b'] = 'green';
container.variant2['c'] = 'blue';

// run through each object
for (var i = 1; i < 3; i++){
    for (prop in container["variant"+i]){
         if (variant.hasOwnProperty(prop)){
            alert(prop+'='+var[prop]);
         }
    }
}

As pointed out in the comments below, if you want to numerically iterate over the properties, you're better off just using an array: 如下面的注释中指出的那样,如果要对属性进行数字迭代,最好只使用数组:

// declare objects
var variants = [{},{}];

variants[0]['a'] = 'apple';
variants[0]['b'] = 'orange';
variants[0]['c'] = 'pear';

variants[1]['a'] = 'red';
variants[1]['b'] = 'green';
variants[1]['c'] = 'blue';

// run through each object
for (var i = 0; i < 2; i++){
    for (prop in variants[i]){
         if (variant.hasOwnProperty(prop)){
            alert(prop+'='+var[prop]);
         }
    }
}

Try this: 尝试这个:

var variant1 = new Object();
variant1['a'] = 'apple';
variant1['b'] = 'orange';
variant1['c'] = 'pear';
var variant2 = new Object();
variant2['a'] = 'red';
variant2['b'] = 'green';
variant2['c'] = 'blue';


for (i=1; i<3; i++){
var thisvar ;
eval( 'thisvar = variant'+i);
    for(var newindex in thisvar) {
        var name = newindex;
        var contents = thisvar[newindex];
        alert(name+'='+contents);
    }
}

如果您只想检查对象属性,则只需执行

alert(JSON.stringify(container))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM