[英]How to push all values into array and get them with javascript
我在此鏈接中有我以前的問題
我要求將所有值放入數組並顯示為HTML。 他們反應很好,但是它只將一個值(zip1)顯示到數組中並將其轉換為HTML。
所以我想根據組號獲取所有值,例如zip1,zip2,距離,權重。
我嘗試過,但是答案沒有改變,我的代碼與以前的答案有所不同。
const array = [[{"loc":{}},{"distance":6.4},{"zip1":"06120"},{"zip2":"06095"},{"group":1},{"weight":1119}],[{"loc":{}},{"distance":6.41},{"zip1":"06095"},{"zip2":"06120"},{"group":2},{"weight":41976}],[{"loc":{}},{"distance":6.41},{"zip1":"06095"},{"zip2":"06120"},{"group":1},{"weight":41976}]];
const merged = array.map((r, a) =>{
const { group } = a.find(n => n.group)
const { zip1 } = a.find(n => n.zip1)
r[group] = r[group] || []
r[group].push({Zip1:zip1})
const { zip2 } = a.find(n => n.zip2)
r[group].push({Zip2:zip2})
const { weight } = a.find(n => n.weight)
r[group].push({weight:weight})
const { distance } = a.find(n => n.distance)
r[group].push({distance:distance})
return r;
},{})
const output = document.getElementById('output');
Object.entries(merged).forEach(([group, zips]) => {
const h1 = document.createElement('h1');
h1.innerHTML = "group " + group
const span = document.createElement('span');
span.innerHTML = `Zip1 - ${zips.zip1},${zips.zip2},${zips.weight},${zips.distance} (in group - ${group})`;
output.appendChild(h1)
output.appendChild(span)
})
arrToObj
函數完成的 zip
值從string轉換為array 。 這樣做是為了便於將來進行_concatenation。 通過zipToArr
函數完成 group
密鑰,並將zip1/zip2
與同一組中的其他對象連接在一起 。 參考grouper
功能 Object.values
獲取分組的對象 。 我們已經有了group
密鑰,因此我們不再需要父密鑰 html
和format
功能 div
來容納組 。 容器將有助於樣式化其第一個元素 group
const array = [[{"loc":{}},{"distance":6.4},{"zip1":"06120"},{"zip2":"06095"},{"group":1},{"weight":1119}],[{"loc":{}},{"distance":6.41},{"zip1":"06095"},{"zip2":"06120"},{"group":2},{"weight":41976}],[{"loc":{}},{"distance":6.41},{"zip1":"06095"},{"zip2":"06120"},{"group":1},{"weight":41976}]]; // Data processing functions const arrToObj = arr => arr.reduce((a, c) => ({ ...a, ...c}), {}); const zipToArr = x => ({...x, zip1: [x.zip1], zip2: [x.zip2]}); const grouper = (a, c) => { delete c.loc; delete c.distance; if (a[c.group]) { a[c.group].zip1.push(...c.zip1); a[c.group].zip2.push(...c.zip2); return a; } else { return {...a, [c.group]: c} } }; // HTML utilities const html = (k, v) => { const it = document.createElement('p'); it.innerHTML = `${k} ${v}`; return it; } const format = g => Object.keys(g).sort().reduce((a, c) => ({...a, [c]: html(c, g[c])}), {}); // Actual processing const data = array.map(arrToObj).map(zipToArr).reduce(grouper, {}); const dataWithHTML = Object.values(data).map(format); // Rendering const display = document.getElementById('display'); dataWithHTML.forEach(it => { const container = document.createElement('div'); Object.values(it).forEach(v => container.appendChild(v)); display.appendChild(container); });
p:first-of-type { font-size: 36px; font-weight: bold; margin: 0; } p { text-transform: capitalize; }
<div id="display"></div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.