酷代码 AI
菜单
服务商

递归实现:将对象所有属性值转换为字符串,复杂嵌套也不怕!

为了实现这个功能,我们可以定义一个递归函数 `stringifyValues`,它接受一个对象作为参数,并返回一个新的对象,其中所有非字符串类型的属性值都被转换成字符串。对于数组和对象类型的属性,我们将递归地调用 `stringifyValues` 函数来处理它们的元素或属性。 下面是具体的实现代码: ```javascript function isObject(value) { return value && typeof value === 'object' && !Array.isArray(value); } function isArray(value) { return Array.isArray(value); } function stringifyValues(obj) { // 检查是否为对象 if (isObject(obj)) { let newObj = {}; for (let key in obj) { if (obj.hasOwnProperty(key)) { newObj[key] = stringifyValues(obj[key]); } } return newObj; } // 检查是否为数组 else if (isArray(obj)) { return obj.map(item => stringifyValues(item)); } // 如果是其他类型,转换为字符串 else { return String(obj); } } // 测试代码 const input = { a: 1, b: { c: 2, d: '3' }, e: [4, 5, 6] }; const output = stringifyValues(input); console.log(output); // 应输出: { a: "1", b: { c: "2", d: "3" }, e: ["4", "5", "6"] } ``` 这段代码首先定义了两个辅助函数 `isObject` 和 `isArray`,用于判断给定的值是否为对象或数组。主函数 `stringifyValues` 根据传入值的类型进行不同的处理: - 如果是对象,创建一个新的对象,并对每个属性递归调用 `stringifyValues`。 - 如果是数组,使用 `map` 方法对数组中的每个元素递归调用 `stringifyValues`。 - 对于其他类型的值(如数字、布尔值等),直接使用 `String` 构造函数将其转换为字符串。 这样,无论输入对象的结构多么复杂,该函数都能正确地将所有非字符串类型的属性值转换为字符串。 ######[AI写代码神器 | 467点数解答 | 2024-11-12 09:07:17]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]