gpt4 book ai didi

javascript - JavaScript 对象中的深度变化值

转载 作者:数据小太阳 更新时间:2023-10-29 05:00:03 25 4
gpt4 key购买 nike

我有一个对象,其中包含未知数量的其他对象。每个(子)对象都可能包含字符串形式的 bool 值,我想将它们更改为真正的 bool 值。这是一个示例对象:

var myObj = {
my1stLevelKey1: "true",
my1stLevelKey2: "a normal string",
my1stLevelKey3: {
my2ndLevelKey1: {
my3rdLevelKey1: {
my4thLevelKey1: "true",
my4thLevelKey2: "false"
}
},
my2ndLevelKey2: {
my3rdLevelKey2: "FALSE"
}
}
}

我最终想要的是这样的:

var myObj = {
my1stLevelKey1: true,
my1stLevelKey2: "a normal string",
my1stLevelKey3: {
my2ndLevelKey1: {
my3rdLevelKey1: {
my4thLevelKey1: true,
my4thLevelKey2: false
}
},
my2ndLevelKey2: {
my3rdLevelKey2: false
}
}
}

重要的是子对象/级别的数量是未知的。如何使用经典 JavaScript 或 Mootools 有效地做到这一点?

最佳答案

递归是你的 friend

(function (obj) { // IIFE so you don't pollute your namespace
// define things you can share to save memory
var map = Object.create(null);
map['true'] = true;
map['false'] = false;
// the recursive iterator
function walker(obj) {
var k,
has = Object.prototype.hasOwnProperty.bind(obj);
for (k in obj) if (has(k)) {
switch (typeof obj[k]) {
case 'object':
walker(obj[k]); break;
case 'string':
if (obj[k].toLowerCase() in map) obj[k] = map[obj[k].toLowerCase()]
}
}
}
// set it running
walker(obj);
}(myObj));

obj[k].toLowerCase() 是让它不区分大小写

关于javascript - JavaScript 对象中的深度变化值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30128834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com