我正在嘗試過濾行程串列并將具有相同名稱的行程組合在一起。它可以作業,但是分組的程序是重復的并保留為它們自己的。
我試過弄亂它是怎么做的,檢查它是否已經存在于物件中,以及其他十幾件事。
您可以在此處查看我正在嘗試處理的原始資料
這是我到目前為止的代碼:
var seen = {};
data = data.filter(async function (entry) {
var previous;
if (seen.hasOwnProperty(entry[1].name)) {
previous = seen[entry[1].name];
var temp = JSON.parse(JSON.stringify(entry[1]));
if (!previous[1]["grouped"]) {
previous[1]["grouped"] = true;
previous[1].pid = "";
previous[1].ppid = "";
previous[1].ctime = "";
previous[1].elapsed = "";
previous[1].timestamp = "";
previous[1]["subps"] = [];
previous[1]["subps"].push(temp);
}
previous[1]["memory"] = entry[1].memory;
previous[1]["cpu"] = entry[1].cpu;
previous[1]["subps"].push(temp);
return false;
} else {
seen[entry[1].name] = entry;
return true;
}
});
console.log(JSON.stringify(data, null, " "));
這是所述代碼的輸出。 這是預期的輸出。
要么我錯過了一些非常簡單的東西,要么我只是愚蠢。大概兩者兼而有之。
附:我不知道給這個取什么標題。
uj5u.com熱心網友回復:
過濾器不會回傳您預期的輸出,因為它總是會從現有陣列中回傳一個資料物件,而不是您創建的那個。
var data = [
[
"0",
{
cpu: 0,
memory: 400150528,
ppid: 4,
pid: 3612,
ctime: 8594,
elapsed: 10784310,
timestamp: 1641346226906,
name: "Memory Compression",
},
],
[
"1",
{
cpu: 0.2,
memory: 336556032,
ppid: 3012,
pid: 1312,
ctime: 61844,
elapsed: 637176,
timestamp: 1641346226906,
name: "chrome.exe",
},
],
[
"2",
{
cpu: 0.4,
memory: 285069312,
ppid: 7772,
pid: 13172,
ctime: 404125,
elapsed: 2139440,
timestamp: 1641346226906,
name: "Code.exe",
},
],
[
"3",
{
cpu: 6.6375,
memory: 284061696,
ppid: 5516,
pid: 6636,
ctime: 452234,
elapsed: 4046397,
timestamp: 1641346226906,
name: "Discord.exe",
},
],
[
"4",
{
cpu: 35.725,
memory: 274665472,
ppid: 15328,
pid: 15232,
ctime: 804718,
elapsed: 1998606,
timestamp: 1641346226906,
name: "node.exe",
},
],
[
"5",
{
cpu: 0,
memory: 236437504,
ppid: 14508,
pid: 22016,
ctime: 41828,
elapsed: 316914,
timestamp: 1641346226906,
name: "Code.exe",
},
],
[
"6",
{
cpu: 0.5875,
memory: 231018496,
ppid: 7772,
pid: 14508,
ctime: 53750,
elapsed: 2130762,
timestamp: 1641346226906,
name: "Code.exe",
},
],
[
"7",
{
cpu: 0,
memory: 199610368,
ppid: 2536,
pid: 10656,
ctime: 32469,
elapsed: 10165205,
timestamp: 1641346226906,
name: "pia-client.exe",
},
],
[
"8",
{
cpu: 0.975,
memory: 193478656,
ppid: 2536,
pid: 3012,
ctime: 144406,
elapsed: 5764764,
timestamp: 1641346226906,
name: "chrome.exe",
},
],
[
"9",
{
cpu: 0,
memory: 186900480,
ppid: 1104,
pid: 8076,
ctime: 8672,
elapsed: 10140626,
timestamp: 1641346226906,
name: "SearchApp.exe",
},
],
];
const result = data.reduce((seen, [_, entry]) => {
if (seen.hasOwnProperty(entry.name)) {
var previous = seen[entry.name] ?? {};
// var temp = JSON.parse(JSON.stringify(entry));
if (!previous["grouped"]) {
previous["grouped"] = true;
previous.pid = "";
previous.ppid = "";
previous.ctime = "";
previous.elapsed = "";
previous.timestamp = "";
previous["subps"] = []; // For duplicate entries add here also, added in expected output previous["subps"] = [entry]
}
previous["memory"] = entry.memory;
previous["cpu"] = entry.cpu;
previous["subps"].push(entry);
} else {
seen[entry.name] = entry;
}
return seen;
}, {});
console.log(JSON.stringify(Object.values(result), null, " "));
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/404742.html
標籤:
