2015-07-25 4 views
2
var a = { 
    element:'input', 
    parent:'div1', 
    name:'inp', 
    type:'text', 
    value:'aa' 
} 

Я хочу перебрать этот объект, начиная от имени атрибута, используя для в цикле Но я не могу сделать это, используя для в цикле есть ли способ Переберите объект, начиная от имя атрибутаJavascript Перебора объектов

+0

Последнее значение в объекте не должно содержать запятой – saadq

+0

Что мешает вам использовать для цикла? – JohnnyFun

+0

, начиная с имени, не является регулярной последовательностью, можно фильтровать ключевые значения в алфавитном порядке, но это не удовлетворяет ваши потребности. Я думаю, вам нужно обработать последовательность в поле зрения. Собственно, обычно представление заботится о последовательностях при представлении данных, но будет полезно, если я знаю, как вы собираетесь представлять эти данные? Также попробуйте использовать редактор для обертывания объекта в шаблоне кода – Reyraa

ответ

0
for(var prop in a) { 
    console.log(a[prop]); 
} 
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] 
}); 
+0

Эти способы влияют на последовательность, в которой вы получаете значения? Я так не думаю. – Reyraa

+0

«Цикл for ... in выполняет итерации по свойствам объекта в произвольном порядке». https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in –

+0

ES6 способ позволяет сортировать порядок ключей перед прохождением цикла –

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

Но имейте в виду, что объекты являются неупорядоченные списки, хотя большинство браузеров сохраняйте свойства объекта в том порядке, в котором они были добавлены.

0

Я считаю, что вы можете сделать это следующим образом:

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

Вы еще зацикливание множества всего имущества, но когда вы столкнулись с данной index, вы начнете реальный цикл.