Javascript 将下划线或lodash替换为香草for循环
我想替换以下代码,使其不再依赖underline.js或lodash.js的Javascript 将下划线或lodash替换为香草for循环,javascript,loops,ecmascript-6,underscore.js,lodash,Javascript,Loops,Ecmascript 6,Underscore.js,Lodash,我想替换以下代码,使其不再依赖underline.js或lodash.js的.each()函数: function fset(data) { _.each(dataDefault, function(item, key) { var val = ( data[key] ? data[key] : dataDefault[key] ); $rootScope.meta[key] = val; }); }; 理想情况下,我想使用一个普通的JavaSc
.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;
}
调用该函数的示例如下:
meta.fset({
title: 'Hello world',
description: 'DESC'
});
所以,如果我正确地解释了你的逻辑,你要做的是循环默认对象中的键,如果你要检查的对象没有该键,你想将该键添加到对象并将其值指定给默认值,对吗?浏览器级别有任何限制吗 如果您确实知道默认数据对象的外观,那么最快的方法是在循环中为..使用
:
var data = {}; // or wherever you get it from)
for (var key in defaultData){
data[key] = data[key] || defaultData[key];
}
这假定data.key
为非null和非false。如果false或null是一个有效值(默认值不是null或false),那么您需要更加努力地确定键的存在和值的类型。但根据你的例子,你并不担心 试试这个:
Object.keys(dataDefault).forEach(function (key) {
var value = dataDefault[key]
// iteration code
})
对于for..in,您必须使用hasOwnProperty排除继承属性。True,但并非所有浏览器都支持forEach
或Object.keys
。在他的例子中,没有任何继承财产需要担心。
Object.keys(dataDefault).forEach(function (key) {
var value = dataDefault[key]
// iteration code
})