是否有任何方法可以在jQuery中跳过迭代第一个元素,如gt(0) 这是我正在使用的代码
for(var prop in item){
alert(prop + " = " + item[prop]);
}
答案 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}}