var a = {
element:'input',
parent:'div1',
name:'inp',
type:'text',
value:'aa'
}
我想循环遍历此对象,从name属性开始使用in循环 但我无法使用in循环执行此操作 有没有办法从名称属性
开始循环对象答案 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
时,您将开始真正的循环。