我有一个对象数组,键是页面和链接,我希望最终结果按链接将页面分组。
我的代码是:
let Test =[
{page:'getting link 1', lien:['lienPage1HTTP_404V']},
{page:'getting link 2', lien:['lienPage2HTTP_404V1']},
{page:'getting link 3', lien:['lienPage3HTTP_404V3','lienPage3HTTP_404V']},
{page:'getting link 4', lien:['lienPage4HTTP_404V4']},
];
var sorted = {};
var Last1 =[];
var Last2 =[];
for( var i = 0; i< Test.length; i++ ){
if(Test[i].lien.length>1){
for(let k=0; k<Test[i].lien.length; k++){
Last1.push(({lien:Test[i].lien[k], page: Test[i].page}))
}
}
else {
Last2.push(Test[i])
}
}
var Last = Last1.concat(Last2);
for( var i = 0; i< Last.length; i++ ){
if( sorted[Last[i].lien] == undefined ){
sorted[Last[i].lien] = [];
}
sorted[Last[i].lien].push(Last[i].page)
}
当我尝试管理sorted
时,我得到了:
[object Object] {
lienPage1HTTP_404V: ["getting link 1"],
lienPage2HTTP_404V1: ["getting link 2"],
lienPage3HTTP_404V: ["getting link 3"],
lienPage3HTTP_404V3: ["getting link 3"],
lienPage4HTTP_404V4: ["getting link 4"]
}
但是我希望最终结果将是:
[object Object] {
lienPage1HTTP_404V: ["getting link 1", "getting link 3"],
lienPage2HTTP_404V1: ["getting link 2"],
lienPage3HTTP_404V3: ["getting link 3"],
lienPage4HTTP_404V4: ["getting link 4"]
}
对于每个相同的键,我们都有他的值的数组。
我该如何解决?
您只能使用lien
的一部分字符串,而仅将HTTP_404V'
分组到一个临时对象中。
var data = [{ page: 'getting link 1', lien: ['lienPage1HTTP_404V'] }, { page: 'getting link 2', lien: ['lienPage2HTTP_404V1'] }, { page: 'getting link 3', lien: ['lienPage3HTTP_404V3', 'lienPage3HTTP_404V'] }, { page: 'getting link 4', lien: ['lienPage4HTTP_404V4'] }],
reference = {},
grouped = {};
for (let { page, lien } of data) {
for (let k of lien) {
let key = k.slice(9); // or whatever is suitable for real data
if (!reference[key]) {
reference[key] = [];
grouped[k] = reference[key];
}
reference[key].push(page);
}
}
console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }