簡體   English   中英

Javascript遍歷對象

[英]Javascript Looping through objects

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

我想使用for in循環從名稱屬性開始遍歷此對象,但是我無法使用for in循環來執行此操作,是否有任何方法可以通過name屬性開始遍歷對象

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

舊方法:

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]
});

您可以執行以下操作:

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]);
}

但是請記住,即使大多數瀏覽器按添加對象的順序保留對象屬性,對象也是無序列表。

我相信您可以按照以下步驟進行操作:

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

您仍在循環整個屬性集,但是當遇到給定index ,將開始實際循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM