この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - JavaScript コーディング問題
80. URLSearchParamsを実装する
class MyURLSearchParams { constructor(queryString) { this.params = {}; if (queryString) { const query = queryString.startsWith("?") ? queryString.slice(1) : queryString; const pairs = query.split("&"); pairs.forEach((pair) => { const [key, value] = pair.split("="); this.append(key, value); }); } } append(name, value) { if (!this.params[name]) { this.params[name] = []; } this.params[name].push(value); } delete(name) { delete this.params[name]; } entries() { return Object.entries(this.params); } forEach(callback) { this.keys().forEach((key) => { callback(this.get(key), key, this); }); } get(name) { return this.params[name] ? this.params[name][0] : null; } getAll(name) { return this.params[name] || []; } has(name) { return this.params[name] !== undefined; } keys() { return Object.keys(this.params); } set(name, value) { this.params[name] = [value]; } sort() { const sortedParams = {}; Object.keys(this.params) .sort() .forEach((key) => { sortedParams[key] = this.params[key]; }); this.params = sortedParams; } toString() { const paramPairs = []; for (const [name, values] of Object.entries(this.params)) { for (const value of values) { paramPairs.push(`${encodeURIComponent(name)}=${encodeURIComponent(value)}`) } } return paramPairs.join("&"); } values() { return Object.values(this.params).reduce((acc, curr) => { return [...acc, ...curr]; }, []); } [Symbol.iterator]() { const entries = this.entries(); let index = 0; return { next: () => { if (index < entries.length) { const result = { value: entries[index], done: false }; index++; return result; } return { value: undefined, done: true }; }, }; }}