Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在另一个数组中对多个项目进行分组和差异数组_Javascript - Fatal编程技术网

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))