【もりけん塾】言語チャレンジ@配列を[{0:”a”},{1:”b”},{2:”c”}]にする方法を考える

JavaScript

もりけん塾で新たに追加された課題….「 言語チャレンジ 」に取り組んでいます。

課題はあらかじめinputする値が決まっていて、outputの値が戻り値になる様なコードを書きます
ここではoutputの値が、課題で提示されている通りになっていればクリアとなります。

今回は課題の中で出てきた、配列を[{0:”a”},{1:”b”},{2:”c”}]に加工する方法をいくつか考えてみました

課題7

input

["a", "b", "c"]

output

[{0: "a"}, {1: "b"}, {2: "c"}]

map

最終的に配列で値を返したかったので、mapがいいのでは….?

まず一番に考えついたコードはmapを使用する方法です

const input = ["a", "b", "c"];
const f = (array) => {
  return array.map((value, index) => {
    let obj = {};
    obj[index] = value;
    return obj;
  });
}
const result = f(input);
console.log(result);

または

const input = ["a", "b", "c"];
const f = (array) => {
  return array.map((value, index) => {
    return obj = {
      [index]: value
    };
  });
}
const result = f(input);
console.log(result);

もっさり感を感じる….
return は省略できそう。
戻り値がオブジェクトの場合は()を使用するんだったハズ….

const input = ["a", "b", "c"];

const f = (param) => {
  return param.map((value, index) => ({ [index]: value }));
}
const output = f(input);
console.log(output);

mapとObject.assign

配列で返して欲しい
→mapを使用
オブジェクト部分は、Object.assignを使用してできそう

const input = ["a", "b", "c"];

const f = (param) => {
  return param.map((el,index) => Object.assign({},{[index]:el}));
}

const output = f(input);
console.log(output)

reduceとpush

最終的には 配列内に、オブジェクトを追加した一つの値を返して欲しい…
→ reduceでできそう
配列内にオブジェクト追加する
→ pushが使えそう

const input = ["a", "b", "c"];

const f = (param) => {
  return param.reduce((array, el, index) => {
    array.push({ [index]: el });
    return array;
  }, []);
}

const result = f(input);
console.log(result);

まとめ

今回はmapを使用した方法で、PRをしました

色々な方法を試していると、メソッドの使い方が少しずつ馴染んでくる感覚があります
どんどん課題を進めていきます🙋‍♀️


コメント

タイトルとURLをコピーしました