この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - JavaScript コーディング問題
125. classNames()を実装する
解法例:
function classNames(...args) { let result = ''; for (const arg of args) { if (arg === null || arg === undefined || typeof arg === 'symbol' || typeof arg === 'bigint') { continue; } if (typeof arg === 'string' || typeof arg === 'number') { result += `${arg} `; } else if (Array.isArray(arg)) { result += `${classNames(...arg)} `; } else { for (const prop in arg) { if (Object.prototype.hasOwnProperty.call(arg, prop) && arg[prop]) { result += `${prop} `; } } } } return result.trim();}
解法のポイント:
- 与えられた引数リスト(
args
)をfor...ofでループする。 - falsy valuesをスキップする。具体的には、
null
,undefined
,symbol
,bigint
は無視する。 typeof arg
がstring
またはnumber
の場合、そのままresult
に追加する。Array.isArray(arg)
の場合、再帰的にclassNames()
を呼び出す。- それ以外の場合、
for...in
ループでオブジェクト(arg
)のpropertyをループし、keyがstringかつvalueがtruthyの場合にのみresult
に追加する。 - 返り値の文字列の最後に余計なスペースがあるかもしれないため、最後に
.trim()
を呼び出してスペースを削除する。