配列エントリを分割してJavaScriptでオブジェクトを形成する
次のような文字列リテラルの配列があるとします-
const arr = [ "fiat−palio", "fiat−stilo", "fiat−strada", "fiat−uno", "fiat−uno", "gm−corsa", "gm−celta", "ford−fiesta", "volkswagen−gol", "volkswagen−gol", "volkswagen−gol", "volkswagen−voyage" ]
このような文字列の配列を1つ取り込むJavaScript関数を作成する必要があります。上記の配列では、すべてのエントリに共通するものが1つあり(すべて文字列であることに加えて)、ダッシュ('-')で区切られた文字列ペアがあります。
この関数は、ダッシュ('-)の前の部分としてキーを含むオブジェクトと、元の配列内にあった各文字列のカウントを含むオブジェクトとしての値を準備する必要があります。
したがって、上記の配列の場合、出力は次のようになります-
const output = {
"fiat": {
"palio": 1,
"stilo": 1,
"strada": 1,
"uno": 2
},
"gm": {
"corsa": 1,
"celta": 1
},
"ford": {
"fiesta": 1
},
"volkswagen": {
"gol": 3,
"voyage": 1
}
}; 例
このためのコードは-
になりますconst arr = [
"fiat−palio",
"fiat−stilo",
"fiat−strada",
"fiat−uno",
"fiat−uno",
"gm−corsa",
"gm−celta",
"ford−fiesta",
"volkswagen−gol",
"volkswagen−gol",
"volkswagen−gol",
"volkswagen−voyage"
];
const convertToObject = (arr = []) => {
let res = arr.reduce((acc, val) => {
let pair = val.split('−');
let mark = pair[0];
let model = pair[1];
if(!acc.hasOwnProperty(mark)) {
acc[mark] = {};
acc[mark][model] = 1;
} else {
if(acc[mark].hasOwnProperty(model)) {
acc[mark][model] += 1;
} else {
acc[mark][model] = 1;
}
}
return acc;
}, {})
return res;
}
console.log(convertToObject(arr)); 出力
そして、コンソールの出力は-
になります{
fiat: { palio: 1, stilo: 1, strada: 1, uno: 2 },
gm: { corsa: 1, celta: 1 },
ford: { fiesta: 1 },
volkswagen: { gol: 3, voyage: 1 }
} -
JavaScriptのObject.keys()。map()VS Array.map()
以下は、JavaScriptでObject.keys()。map()とArray.map()を示すコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title>
-
JavaScriptでオブジェクトプロパティ名の配列を置き換える
以下は、JavaScriptでオブジェクトプロパティ名の配列を置き換えるコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style&g