javascript - 用普通的 for 循环替换下划线或 lodash _.each

标签 javascript loops ecmascript-6 underscore.js lodash

我想替换下面的代码,不再依赖 underscore.js 或 lodash.js 的 _.each() 函数:

function fset(data) {
    _.each(dataDefault, function(item, key) {
        var val = ( data[key] ? data[key] : dataDefault[key] );
        $rootScope.meta[key] = val;
    });
};

理想情况下,我想使用普通的 JavaScript for 循环,但我不明白 underscore/lodash 中的 _.each() 函数如何替换它...

类似于:

for(var i=0; i<data.length;i++) {
    var val = ( data[key] ? data[key] : dataDefault[key] );
    $rootScope.meta[key] = val;
}

但是,我不知道如何通过这种方式获取 key 和项目...

dataDefault 看起来像:

var dataDefault = {
    title: null,
    description: null
};

调用该函数的示例是:

meta.fset({
    title: 'Hello world',
    description: 'DESC'
});

最佳答案

试试这个:

Object.keys(dataDefault).forEach(function (key) { 
    var value = dataDefault[key]
    // iteration code
})

对于 for..in,您必须使用 hasOwnProperty 来排除继承属性。

关于javascript - 用普通的 for 循环替换下划线或 lodash _.each,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28438878/

相关文章:

javascript - jQuery 中没有“确定”按钮的警报框

javascript - 无法在 pubnub javascript 回调中收到错误

javascript - 鼠标移动时在 Canvas 上显示矩形

javascript - 使用 jquery 循环列表 - 轮播效果

javascript - `for of` JavaScript 语句的支持情况如何?

javascript - 试图在 Phonegap 中调用 navigator.accelerometer

python - 我想提取类对象拥有的所有值

java - 如何在java中有效地使用方法中的参数?

javascript - ES6 和 Webpack : import not working

javascript - 搜索数百万条记录的最快方法是两个 js 对象的组合