迭代跳过第一个对象的所有属性

时间:2011-12-30 07:02:24

标签: javascript

是否有任何方法可以在jQuery中跳过迭代第一个元素,如gt(0) 这是我正在使用的代码

 for(var prop in item){
   alert(prop + " = " + item[prop]);
 }

5 个答案:

答案 0 :(得分:1)

您不应该依赖JavaScript对象属性的顺序,因为属性是无序的。 JQuery的gt适用于数组,如果你想实现类似的东西,你需要重新设计你的JSON模型,如:

 var item = [
{
   prop: "value"
},
{
   prop1: "value2"
}];

将对象属性包装在数组中之后,您可以像这样使用它:

var i = item.length - (item.length - 1);

for (i; i < item.length; i++) {
    for (var k in item[i]) {
        alert(k + "=" + item[i][k]);
    }

}

这是fiddle

答案 1 :(得分:1)

只需使用Object.hasOwnProperty

var item = {foo: 'bar', bar: 'baz'};

if (item.hasOwnProperty('foo')) {
    console.log(item['foo']);
}

您还可以使用Object.keys测试密钥:

if (Object.keys(item).indexOf('foo') !== -1) {
    console.log(item['foo']);
}

答案 2 :(得分:0)

if (prop !== item[0]){
  if (item.hasOwnProperty(prop){
    alert(prop + " = " + item[prop]);
  }
}

将其置于for in循环中应该为您处理。请注意,您将需要使用object.hasOwnProperty来确保您没有迭代从原型链继承的函数或其他对象。

请注意,在JavaScript中使用for in循环时:

  

ECMA标准没有指定枚举顺序,但非数组对象的事实标准是根据原始赋值的顺序枚举属性。

通过http://javascriptweblog.wordpress.com/2011/01/04/exploring-javascript-for-in-loops/

答案 3 :(得分:0)

直接解决方案:您可以在js循环中使用continue来跳过迭代/元素。 if(index == 0)继续。

但绝对要考虑上面人们所说的话。

答案 4 :(得分:0)

我写了一个函数,它能够通过函数参数中定义的属性索引进行迭代。两个第一个参数是slice / substr中的参数。 这些参数不是强制性的。我们可以通过以下方式致电:

 someObject.customIterate( callback );

这意味着 - &gt;从= 0到= -1迭代整个属性

 someObject.customIterate( from, callback)

这意味着从from属性的值迭代到结束。

Object.prototype.customIterate = function( from, to, callback ) {

   var f, t;
   if( ( f = typeof from === "function" ) ||  ( t = typeof to === "function" ) ) {
        callback = f ? from : to;
        to = -1;
        from = f ? 0 : from;

    }else if( !callback ) {
        return ;
    }

   for( var i in this) {
        if( from-- > 0 ) {
           continue;
        } else if( to-- ) {
            callback.call( this, i, this[i] );
        } else break;
    }
};

回调有两个参数 - 属性名称及其值。 在this的上下文中调用回调,var item = { a: 0, b: 1, c: 2, d: 4 }; item.customIterate( 1, function( prop, value ) { // if( this.hasOwnProperty( prop ) ) ;// if you need that alert( prop + "=" + value ); }); 是调用customIterate的对象。

现在:

{{1}}

演示:http://jsfiddle.net/hLhR9/