获取每个中不为空的最后一项

时间:2015-03-24 11:42:01

标签: javascript jquery

var itemLength= $('.item').length;

        $.each(JSON.parse(json), function(idx, obj) {

            var itemId= obj.itemId;

                if(itemId!= null){

                    var temp = '<div id="'+ itemId +'"></div>'
                    $(temp).appendTo($('#somewhere'));

                }            

        });

如何防止最后一个itemId被追加? idx不等于项目的长度?

1 个答案:

答案 0 :(得分:2)

  

如何防止最后一个itemId被追加? idx不等于项目的长度?

这是两种直截了当的方式之一,是的,那是slice

如果使用forEach而不是$.each(我假设JSON定义了一个数组),那么使索引更容易,因为它为您提供了对数组的引用:

JSON.parse(json).forEach(function(obj, idx, array) {
    if (idx < array.length - 1 && obj) {
        if (obj.itemId) {
            $('#somewhere').append('<div id="' + obj.itemId + '"></div>');
        }
    }
});

但如果您更喜欢$.each

var data = JSON.parse(json);
$.each(data, function(idx, obj) {
    if (idx < data.length - 1 && obj) {
        if (obj.itemId) {
            $('#somewhere').append('<div id="' + obj.itemId + '"></div>');
        }
    }
});

或者,您可以使用slice

JSON.parse(json).slice(0, -1).forEach(function(obj) {
    if (obj && obj.itemId) {
        $('#somewhere').append('<div id="' + obj.itemId + '"></div>');
    }
});

或者:

$.each(JSON.parse(json).slice(0, -1), function(idx, obj) {
    if (obj && obj.itemId) {
        $('#somewhere').append('<div id="' + obj.itemId + '"></div>');
    }
});

(当你给slice一个负面索引时,它被视为距离结尾的偏移量。)


无论您使用什么,我都可能会查找#something 一次并重复使用生成的jQuery对象。