我正在尝试使用 Underscore.js 单步执行对象并转换/混淆每个值,以便:
{
"weather": "Cloudy",
"degrees": 90
}
变成:
{
"weather": "Claido",
"degrees": 21
}
完全无法理解的原因 - 我试图在不破坏其结构的情况下混淆 JSON 对象。所以如果它是字符串,我用另一个随机元音替换任何元音。如果它是一个数字,我只是选择另一个随机数字,布尔值是随机设置的,等等。我可以构建每个元素类型的操作,我现在才确定如何递归地进行操作。
我可以做这样的事情:
var t = { "weather":"Cloudy", "degrees": 12, "snowing": false };
var newObj = {};
var g = _.each(t, function(value, key, list) {
if (_.isString(value)){
newObj[key] = value.replace(/[aeiou]/gi, '');
}
if (_.isNumber(value)){
var n = Math.floor((Math.random()*10)+1);
newObj[key] = n + value;
}
if (_.isBoolean(value)){
newObj[key] = Math.random() >= 0.5;
}
});
console.log(newObj);
一切都很好。问题在于数组和嵌套对象,如下所示:
{
"weather": "Cloudy",
"outsideWeather": {
"forecast": "Stormy",
"outside": 48
},
"degrees": 12,
"snowing": false
}
那时我的简单 Switch 机箱坏了。任何想法如何递归地遍历每个值,对其进行转换,然后将对象构建回其原始结构?
非常感谢