gpt4 book ai didi

javascript - 获取此数组模型的配对数据的最佳方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:56:38 25 4
gpt4 key购买 nike

我是编程界的新手,请帮助我。任何帮助,将不胜感激!我有一个包含如下所示数据的数组。我必须制作数据,以便在每个组中仅按顺序包含配对的 user_id。如果要配对,配对的 user_id 应该不同。

  [
{"user_id": 35, "group": "A"},
{"user_id": 40, "group": "B"},
{"user_id": 39, "group": "B"},
{"user_id": 39, "group": "B"},
{"user_id": 39, "group": "B"},
{"user_id": 40, "group": "B"},
{"user_id": 39, "group": "B"},
{"user_id": 39, "group": "B"},
{"user_id": 40, "group": "C"},
{"user_id": 39, "group": "C"}
]

所以数据会是这样的:

第一项被删除,因为它没有对。第 5 项和第 6 项被删除,因为它们具有相同的 user_id(如果要配对,user_id 应该不同)。

[
{"user_id": 35, "group": "A"}, <-- remove
{"user_id": 40, "group": "B"},
{"user_id": 39, "group": "B"},
{"user_id": 39, "group": "B"}, <-- remove
{"user_id": 39, "group": "B"}, <-- remove
{"user_id": 40, "group": "B"},
{"user_id": 39, "group": "B"},
{"user_id": 39, "group": "B"}, <-- remove
{"user_id": 40, "group": "B"}, <-- remove
{"user_id": 40, "group": "C"},
{"user_id": 39, "group": "C"}
]

因此,结果将是:

[
{"user_id": 40, "group": "B"},
{"user_id": 39, "group": "B"},
{"user_id": 40, "group": "B"},
{"user_id": 39, "group": "B"},
{"user_id": 40, "group": "C"},
{"user_id": 39, "group": "C"}
]

实现此目的的最佳方法是什么(使用 splice 方法或创建一个新数组然后推送它,或其他方法)?

最佳答案

你可以这样做:

for(var i = 0; arr.length > i;) {
if (!arr[i+1] || arr[i].group != arr[i+1].group) {
//arr[i] is last in the group
arr.splice(i, 1);
} else if (arr[i].user_id == arr[i+1].user_id || (arr[i-1] && arr[i].user_id == arr[i-1].user_id && arr[i].group == arr[i-1].group)) {
//next or previous item have same id and group
arr.splice(i, 1);
} else {
//arr[i] and arr[i+1] is a valid pair
i += 2;
}
}

var arr = [
{"user_id": 35, "group": "A"}, //<-- remove
{"user_id": 40, "group": "B"},
{"user_id": 39, "group": "B"},
{"user_id": 39, "group": "B"}, //<-- remove
{"user_id": 39, "group": "B"}, //<-- remove
{"user_id": 40, "group": "B"},
{"user_id": 39, "group": "B"},
{"user_id": 39, "group": "B"}, //<-- remove
{"user_id": 40, "group": "B"}, //<-- remove
{"user_id": 40, "group": "C"},
{"user_id": 39, "group": "C"}
]

for(var i = 0; arr.length > i;) {
if (!arr[i+1] || arr[i].group != arr[i+1].group) {
arr.splice(i, 1);
} else if (arr[i].user_id == arr[i+1].user_id || (arr[i-1] && arr[i].user_id == arr[i-1].user_id && arr[i].group == arr[i-1].group)) {
arr.splice(i, 1);
} else {
i += 2;
}
}

arr.forEach(function(e) {
document.body.innerHTML += JSON.stringify(e) + "<br>";
});

关于javascript - 获取此数组模型的配对数据的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34598155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com