【发布时间】:2021-05-16 09:39:54
【问题描述】:
我有一个Object Array(申请人)和一个String Array(column_order)。
我将在表格中显示申请人,并且需要根据与列顺序中的字符串匹配的键的顺序来更改列的顺序。顺序将与 column_order 中字符串的顺序相同,不匹配的键在各自对象的末尾保持正常顺序。
这对我来说很难解释。所以我会给出一些示例结果来帮助解释。
applicants = [
{applicant_id: 5, recruiter_id: null, resume_cv_id: "null", cover_letter_id: "null", nda_id: null},
{applicant_id: 6, recruiter_id: null, resume_cv_id: "null", cover_letter_id: "null", nda_id: null}]
下面的第一个示例: 注意我希望recruiter_id 成为数组中每个对象的第一个密钥对。
然后剩下没有提到的都是在结尾的对象。
column_order = ["recruiter_id"]
result = [
{ recruiter_id: null, applicant_id: 5, resume_cv_id: "null", cover_letter_id: "null", nda_id: null},
{ recruiter_id: null, applicant_id: 6, resume_cv_id: "null", cover_letter_id: "null", nda_id: null}]
下面的第二个例子: 注意我希望recruiter_id 成为数组中每个对象的第一个密钥对,然后是cover_letter_id。
然后剩下没有提到的都是在结尾的对象。
column_order = ["recruiter_id","cover_letter_id"]
result = [
{recruiter_id: null,cover_letter_id: "null", applicant_id: 5, resume_cv_id: "null", nda_id: null},
{recruiter_id: null,cover_letter_id: "null", applicant_id: 6, resume_cv_id: "null", nda_id: null}]
我在想也许过滤掉匹配的键,然后将它们存储在一个临时对象数组中。然后在检查匹配完成后将其组合回来......?
以下是我目前所拥有的。尽管至少可以说它没有功能。我正在玩它,看看我返回了什么结果。
props.data = props.data.filter(function (obj) {
var temp_obj = {}
var obj_length = Object.size(obj)
for (let index = 0; index < obj_length; index++) {
if (Object.keys(obj)[index] == "asdasda") {
console.log("This: ", Object.keys(obj)[index])
}
else {
console.log("len",)
var pair = { AAaa: "Test" };
temp_obj[Object.size(temp_obj)] = { ...temp_obj[Object.size(temp_obj)], ...pair };
}
}
return temp_obj
})
我将尝试使用此Removing specific keys from an object 删除匹配的密钥,然后在开始时重新加入它们。
我发现这非常令人困惑且难以解决。有人可以帮我给我处理这个问题的代码。
【问题讨论】:
-
已修复。数组中的对象都应该是相同的顺序。
-
好的,这最后的编辑让很多更有意义。谢谢!
标签: javascript arrays sorting object