この解答例は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 argstringまたはnumberの場合、そのままresultに追加する。
  • Array.isArray(arg)の場合、再帰的にclassNames()を呼び出す。
  • それ以外の場合、for...inループでオブジェクト(arg)のpropertyをループし、keyがstringかつvalueがtruthyの場合にのみresultに追加する。
  • 返り値の文字列の最後に余計なスペースがあるかもしれないため、最後に.trim()を呼び出してスペースを削除する。