我有一個功能
const output = {}
sites.forEach(obj=>{
const ids = obj.ids
if(ids && ids.length>0){
ids.forEach(id=>{
if(!output[id]){
output[id] = []
}
output[id].push(obj.url);
});
}
});
fs.writeFileSync('cleanedData.json', JSON.stringify(output));
這需要以下資料:
{
url: "www.site.com",
ids: ["F20", "C10", "C05"]
},
{
url: "www.site.com/something",
ids: ["F20", "C05", "C10"]
},
{
url: "www.site.com/somethingelse",
ids: ["F20", "C12", "C05"]
}
并對其進行轉換,以便我擁有所有 id 和具有該 id 的所有 url 的串列:
{
"F20": [
"www.site.com",
"www.site.com/something",
"www.site.com/somethingelse"
]
}, {
"C10": [
"www.site.com",
"www.site.com/something"
]
}, {
"C12": [
"www.site.com/somethingelse"
]
}, {
"C05": [
"www.site.com",
"www.site.com/something",
"www.site.com/somethingelse"
]
}
我可以計算每個 id 的陣列長度
console.log(Object.values(output).map(id => id.length))
但無法弄清楚如何將其作為 forEach 的一部分包含在內,以便我在每個物件中都有一個鍵/值來顯示陣列的長度。
uj5u.com熱心網友回復:
在輸出中使用嵌套物件,并為其提供一個length
屬性,當您推入陣列時該屬性會增加。
const sites = [{
url: "www.site.com",
ids: ["F20", "C10", "C05"]
},
{
url: "www.site.com/something",
ids: ["F20", "C05", "C10"]
},
{
url: "www.site.com/somethingelse",
ids: ["F20", "C12", "C05"]
}
];
const output = {};
sites.forEach(obj => {
const ids = obj.ids
if (ids && ids.length > 0) {
ids.forEach(id => {
if (!output[id]) {
output[id] = {length: 0, urls: []}
}
output[id].urls.push(obj.url);
output[id].length ;
});
}
});
console.log(output);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/496201.html
標籤:javascript 数组 ecmascript-6 前锋
上一篇:R中常見變數名的例外值檢測