Javascript 在另一个数组中对多个项目进行分组和差异数组
这是我的阵列:Javascript 在另一个数组中对多个项目进行分组和差异数组,javascript,Javascript,这是我的阵列: diffList = [ {group: "one", version: 1.1, old: 0.1}, {group: "two", version: 2.1, old: 1.1}, {group: "one", version: 1.2, old: 0.2}, {group: "one", version: 1.3, old: 0.3} {group: "one", version: 1.4, old: 1.4} {group:
diffList = [
{group: "one", version: 1.1, old: 0.1},
{group: "two", version: 2.1, old: 1.1},
{group: "one", version: 1.2, old: 0.2},
{group: "one", version: 1.3, old: 0.3}
{group: "one", version: 1.4, old: 1.4}
{group: "three", version: 3.1, old: 3.1}
{group: "four", version: 4.1, old: 4.1}
]
我想转换成这个(只需要检索较大和较小的版本)并只推送不同的版本(预期):
]
我在做什么:
const groups = {};
for (let i = 0; i < diffList.length; i++) {
const groupName = diffList[i].group;
if (!groups[groupName]) {
groups[groupName] = {
recentVersion: diffList[i].version,
oldVersion: diffList[i].old,
};
}
if (groups[groupName].recentVersion < diffList[i].version) {
groups[groupName].recentVersion = diffList[i].version;
}
if (groups[groupName].oldVersion > diffList[i].old) {
groups[groupName].oldVersion = diffList[i].version;
}
}
let myArray = [];
for (const groupName in groups) {
myArray.push({
group: groupName,
recentVersion: groups[groupName].recentVersion,
oldVersion: groups[groupName].oldVersion,
});
}
console.log(myArray);
当我需要为脚本中的差异指定条件时…无论如何。检查版本是否相同,省略推送
for (const groupName in groups) {
// add a check in advance for same versions
if (groups[groupName].recentVersion === groups[groupName].oldVersion) continue;
myArray.push({
group: groupName,
recentVersion: groups[groupName].recentVersion,
oldVersion: groups[groupName].oldVersion,
});
}
你能试试我的代码吗
let diffList = [
{group: "one", version: 1.1, old: 0.1},
{group: "two", version: 2.1, old: 1.1},
{group: "one", version: 1.2, old: 0.2},
{group: "one", version: 1.3, old: 0.3},
{group: "one", version: 1.4, old: 1.4},
{group: "three", version: 3.1, old: 3.1},
{group: "four", version: 4.1, old: 4.1},
]
let groups = []
diffList.map(l => {
if (groups.find(g => g.group === l.group)) {
} else groups.push({group: l.group})
})
groups.map(g => {
let arr_filter = diffList.filter(d => d.group === g.group)
arr_filter.sort((a,b) =>{
return b.version - a.version
})
g.recentVersion = arr_filter[0].version
arr_filter.sort((a,b) =>{
return a.old - b.old
})
g.oldVersion = arr_filter[0].old
})
console.log(groups.filter(g => g.recentVersion != g.oldVersion))
这是
for (const groupName in groups) {
// add a check in advance for same versions
if (groups[groupName].recentVersion === groups[groupName].oldVersion) continue;
myArray.push({
group: groupName,
recentVersion: groups[groupName].recentVersion,
oldVersion: groups[groupName].oldVersion,
});
}
let diffList = [
{group: "one", version: 1.1, old: 0.1},
{group: "two", version: 2.1, old: 1.1},
{group: "one", version: 1.2, old: 0.2},
{group: "one", version: 1.3, old: 0.3},
{group: "one", version: 1.4, old: 1.4},
{group: "three", version: 3.1, old: 3.1},
{group: "four", version: 4.1, old: 4.1},
]
let groups = []
diffList.map(l => {
if (groups.find(g => g.group === l.group)) {
} else groups.push({group: l.group})
})
groups.map(g => {
let arr_filter = diffList.filter(d => d.group === g.group)
arr_filter.sort((a,b) =>{
return b.version - a.version
})
g.recentVersion = arr_filter[0].version
arr_filter.sort((a,b) =>{
return a.old - b.old
})
g.oldVersion = arr_filter[0].old
})
console.log(groups.filter(g => g.recentVersion != g.oldVersion))