酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

编写一个函数,该函数可以将一个对象的所有属性值转换为字符串类型,包括嵌套的对象属性。如果属性值已经是字符串,则保持不变。要求使用递归方式实现。 输入:对象 { a: 1, b: { c: 2, d: '3' }, e: [4, 5, 6] } 输出:对象 { a: "1", b: { c: "2", d: "3" }, e: ["4", "5", "6"] }

为了实现这个功能,我们可以定义一个递归函数 `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` 构造函数将其转换为字符串。 这样,无论输入对象的结构多么复杂,该函数都能正确地将所有非字符串类型的属性值转换为字符串。 [2024-11-12 09:07:17 | AI写代码神器 | 467点数解答]

相关提问