本关任务:编写一个以对象作为参数的函数。 相关知识 对象作为参数 复杂的函数通常多达十几个参数,尽管JavaScript不做参数个数和类型的检查,但是调用时实参的顺序不能乱。开发人员需要检查每一个实参和形参的对应关系,这样效率很低。一种很好的解决方案是使用对象作为参数,函数会根据对象的属性名操作参数。 function myFunction(obj) { console.log(obj.name); obj.number++; return obj.number; } myObj = {name:"myObj",number:34}; myFunction(myObj);//输出myObj console.log(myObj.number);//输出35 这种情况下开发人员不需要记住或查阅形式参数的顺序。 编程要求 本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下: 函数objcetFunction()的参数是一个对象,该函数的功能是返回属性名1+':'+属性值1+','+属性名2+':'+属性值2+','+......+属性值n+','; 测试的时候我们会往mainJs()传入参数1或2或3,分别表示调用函数objectFunction()并传入对象参数park、computer或者city; 比如对于第一个对象park,该函数需要返回name:Leaf Prak,location:Fifth Avenue,todayTourists:4000,; 具体请参见后续测试样例。 测试说明 测试过程: 平台将读取用户补全后的ObjectArguments.js; 调用其中的mainJs()方法,并输入若干组测试数据; 接着根据测试结果判断程序是否正确。 以下是测试样例: 测试输入: 1 预期输出: name:Leaf Prak,location:Fifth Avenue,todayTourists:4000,
时间: 2025-06-25 11:26:24 浏览: 9
### 解题思路与代码实现
#### 题目分析
题目要求我们编写一个函数 `objectFunction()`,它接受一个对象作为参数,并按指定格式返回字符串。该字符串由对象的所有键值对组成,每个键值对的形式为 `"key:value,"`。
需要注意的是:
1. 按照对象属性的顺序拼接键值对;
2. 字符串最后需保留逗号 `,`;
3. 根据测试输入的不同(`1`, `2`, 或 `3`),传入的对象分别为 `park`, `computer`, 和 `city`。
---
### 实现步骤
1. **遍历对象属性**:
- 使用 `for...in` 循环或者 `Object.keys()` 获取对象的所有属性名。
2. **构造目标字符串**:
- 对于每个属性,按照 `"key:value,"` 的格式拼接到结果字符串中。
3. **处理特殊字符**:
- 如果值本身包含引号或其他特殊字符,需要适当转义以保证输出正确。
4. **返回结果**:
- 将完整的结果字符串返回给调用方。
---
### 最终代码
```javascript
function objectFunction(obj) {
let result = ''; // 初始化空字符串用于存储最终结果
// 遍历对象的所有属性
for (let key in obj) {
if (obj.hasOwnProperty(key)) { // 确保只访问自身的属性而非原型链上的
result += `${key}:${obj[key]},`; // 按 "key:value," 的格式添加到结果字符串中
}
}
return result; // 返回完整的字符串
}
// 定义测试用的对象 park、computer 和 city
const park = {
name: "Leaf Park",
location: "Fifth Avenue",
todayTourists: 4000,
};
const computer = {
brand: "Apple",
model: "MacBook Pro",
year: 2021,
};
const city = {
cityName: "New York",
population: 8000000,
country: "USA",
};
// 主函数 mainJs()
function mainJs(input) {
let output;
switch (input) {
case '1':
output = objectFunction(park); // 测试对象 park
break;
case '2':
output = objectFunction(computer); // 测试对象 computer
break;
case '3':
output = objectFunction(city); // 测试对象 city
break;
default:
output = "Invalid input"; // 默认情况
}
console.log(output); // 打印结果
}
// 测试主函数
mainJs('1'); // 输出:name:Leaf Park,location:Fifth Avenue,todayTourists:4000,
mainJs('2'); // 输出:brand:Apple,model:MacBook Pro,year:2021,
mainJs('3'); // 输出:cityName:New York,population:8000000,country:USA,
```
---
### 程序解析
1. **对象属性遍历**:
- 使用了 `for...in` 循环结合 `hasOwnProperty()` 来确保仅遍历自身属性而不会触及原型链上的属性。
2. **动态字符串构建**:
- 利用了模板字面量 `${}` 提高代码可读性和简洁性,同时方便地插入变量值。
3. **switch 分支选择**:
- 根据用户输入的选择项 (`1`, `2`, 或 `3`) 动态加载对应的测试对象并调用 `objectFunction()` 函数。
4. **灵活性和扩展性**:
- 此设计支持轻松增加新的测试对象或调整现有逻辑,无需大幅改动核心部分。
---
###
阅读全文
相关推荐


















