Node.js HTTPS JSON解析编程测评题解法合理性确认
Coderbyte编程测评:Node.js Debugging JSON Data 题目解法确认
题目要求
编写Node.js程序向指定API发送GET请求,API返回的JSON中data字段是包含key=STRING、age=INTEGER格式项的字符串。目标是输出索引10到15之间的key ID(示例格式:q3kG6,MGQpf,tg2VM,...)。题目提供了基础代码框架,需修正以仅将key ID存入keyArray。
题目提供的代码框架
const https = require('https'); https.get('https://coderbyte.com/api/challenges/json/age-counting', (resp) => { let content = ''; resp.on('data', (c) => content += c); resp.on('end', () => { let jsonContent = JSON.parse(content); let jsonContentArray = jsonContent.data.split(","); let keyArray = []; for (let i = 0; i < jsonContentArray.length; i++) { let keySplit = jsonContentArray[i].trim().split("="); keyArray.push(keySplit[1]); } return keyArray; })
我的尝试解法
const https = require('https'); https.get('https://coderbyte.com/api/challenges/json/age-counting', (resp) => { let content = ''; resp.on('data', (c) => content += c); resp.on('end', () => { let jsonContent = JSON.parse(content); let jsonContentArray = jsonContent.data.split(","); let keyArray = []; for (let i = 0; i < jsonContentArray.length; i++) { let keySplit = jsonContentArray[i].trim().split("="); if (jsonContentArray[i].trim().startsWith("key")) { keyArray.push(keySplit[1]); } } let keyArrayLimited = []; for (let i = 10; i < 16; i++) { keyArrayLimited.push(keyArray[i]); } return keyArrayLimited; })
注:已修正原代码中require('https")的引号不匹配错误。
解法正确性确认与题目问题分析
解法正确性:
你的解法逻辑是成立的:先过滤出所有key项存入keyArray,再提取索引10到15(包含10、15)的元素。如果题目示例暗示索引针对过滤后的数组,这个逻辑完全符合要求。题目存在的问题:
- 歧义性:题目未明确“索引”是针对包含
age元素的原始分割数组,还是仅含key的过滤后数组;也未说明索引范围是包含边界(10和15都算)还是排除边界。 - 示例错误:题目给出的示例暗示索引针对过滤后的数组且包含边界,但示例遗漏了应包含的元素
Kj6XW。
- 歧义性:题目未明确“索引”是针对包含
内容的提问来源于stack exchange,提问作者Spencer
相关产品推荐
相关产品推荐

