。每个香草循环
  我想将下面的代码替换为不再依赖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循环,但我不明白下划线/ lodash中的_.each()函数如何取代它... 
就像是:
for(var i=0; i<data.length;i++) {
    var val = ( data[key] ? data[key] : dataDefault[key] );
    $rootScope.meta[key] = val;
}
但是,我不知道如何以这种方式获得钥匙和物品......
  dataDefault看起来像: 
var dataDefault = {
    title: null,
    description: null
};
调用函数的一个例子是:
meta.fset({
    title: 'Hello world',
    description: 'DESC'
});
所以,如果我正确解释你的逻辑,你要做的是循环你默认对象中的键,如果你正在检查的对象没有这个键,你想要添加该键到该对象并将其值分配给默认值,是否正确? 浏览器级别的限制?
  如果你确实知道默认数据对象看起来像是使用for..in循环,那么最快的方法就是这样做: 
var data = {}; // or wherever you get it from)
for (var key in defaultData){
   data[key] = data[key] || defaultData[key];
}
  这假定data.key是非空和非假的。  如果false或null是有效值(并且您的默认值不为null或false),那么您需要花更多精力确定键的存在和值的类型。  但基于你的例子,你并不担心这一点。 
尝试这个:
Object.keys(dataDefault).forEach(function (key) { 
    var value = dataDefault[key]
    // iteration code
})
用for..in必须使用hasOwnProperty来排除继承属性。
链接地址: http://www.djcxy.com/p/27671.html