javascript - Angular.forEach 不返回对象中的最后一项

标签 javascript angularjs loops foreach

       var items = [];

        //angular.forEach(localStorage, function(value, key){
        //    items.push({
        //        'id'    : key,
        //        'text'  : value
        //    });
        //    console.log(value);
        //});
        for(var key in localStorage){
            if(localStorage.hasOwnProperty(key)){
                //console.log(localStorage[row]);
                items.push({
                    'id'    : key,
                    'text'  : localStorage[key]
                });
            }
        }
        return items;

注释代码返回两个元素的数组,而简单的“for in”循环返回 localStorage 对象的所有值(实际上有三个项目)。

我不明白为什么 angular.forEach 不迭代对象中的最后一项?

根据文档,一切都应该没问题 https://docs.angularjs.org/api/ng/function/angular.forEach

最佳答案

这是我从调试中发现的。

由于您已将 localStorage 的键设置为整数(尽管它会被保存为字符串)但是对于像 jQuery 和 Angular 这样的库,它们会将其视为数字并为此遍历对象对象的特定大小。 (这里是 3 个。)

通过使用 jQuery ( https://jsfiddle.net/9n4btgob/ ) 打印所有值,它也给我 0 作为输出,它的值是未定义的。所以迭代将在 2 结束。

因此 angular 使用的是 jQlite,所以它会输出相同的结果。 https://jsfiddle.net/hru2k47u/

这里通过将 localStorage 的第一个值设置为 0 将解决问题。

使用 Angular :https://jsfiddle.net/hru2k47u/1/
使用 jQuery:https://jsfiddle.net/9n4btgob/2/

您可以将任何字母附加到键上。

更新:

在调试 jQuery more 之后,我发现 isArrayLike 函数导致了这个问题。因为此函数为键为数字的 localStorage 返回 true,因此它将开始 for 循环直到它的长度并迭代它。所以 Last 属性不会执行。

if ( isArrayLike( obj ) ) {
            length = obj.length;
            for ( ; i < length; i++ ) {
                if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
                    break;
                }
            }
        } 

关于javascript - Angular.forEach 不返回对象中的最后一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37744935/

相关文章:

javascript - 如何通过单击页面中的其他位置取消下拉列表 - stopPropagation?

javascript - 检查 Angular 数组中的值

javascript - Angularjs:自定义指令上的递归错误太多

javascript - 有人帮我回答一下为什么我们在asp.net中使用脚本吗?

php - 优化我的循环以返回而不是执行 10 次查询

php + mysql 大查询,循环问题

javascript - 音量超出范围

javascript - 带有 String.trim 的 Array.map

javascript - 如何将 json 对象转换为 javascript 中的数组

php - 如何结合我约会的逻辑