Javascript循环遍历对象

时间:2015-07-25 06:23:50

标签: javascript

var a = {
    element:'input',
    parent:'div1',
    name:'inp',
    type:'text',
    value:'aa'
}

我想循环遍历此对象,从name属性开始使用in循环 但我无法使用in循环执行此操作 有没有办法从名称属性

开始循环对象

4 个答案:

答案 0 :(得分:0)

for(var prop in a) {
  console.log(a[prop]);
}

答案 1 :(得分:0)

旧方式:

for (var key in a) {
    if (a.hasOwnProperty(key)) {
        // todo something with a[key]
    }
}

ES6方式:

Object.keys(a).forEach(function(key) {
    // todo something with a[key]
});

答案 2 :(得分:0)

你可以这样做:

var keys = Object.keys(a);
var length = keys.length;
var startAt = keys.indexOf("name");
for(var i = 0; i < length ; i++) {
    var prop = keys[(i+startAt)%length];
    console.log(prop, a[prop]);
}

或者:

var keys = Object.keys(a).sort(function(a,b){ return a !== "name" });
for(var i = 0; i < keys.length; i++) {
    var prop = keys[i];
    console.log(prop, a[prop]);
}

或者:

var keys = Object.keys(a);
var idx = keys.indexOf("name");
if(idx > 0) {
    var tmp = keys[0];
    keys[0] = keys[idx];
    keys[idx] = tmp;
}
for(var i = 0; i < keys.length; i++) {
    var prop = keys[i];
    console.log(prop, a[prop]);
}

但请记住,对象是无序列表,即使大多数浏览器按照添加顺序保留对象属性。

答案 3 :(得分:0)

我相信你可以这样做:

function loopFromIndex(input, index) {
    var started = false;
    for (var property in input) {
        started = started || (index === property);
        if (started) {
            //process iteration
        }
    }
}

您仍在循环整个属性集,但是当您遇到给定的index时,您将开始真正的循环。