我有一个下面的数据模型,但不幸的是我尝试的过滤功能不起作用
var records = {
"emp": ["Rob", "Mary", "Alex", "Martha", "Sam", "Peter"],
"rank": [1, 2, 3, 4, 5, 6],
"role": ["Senior", "Junior", "Mid-Senior", "Senior", "Junior", "Super Senior"],
"country": ["Germany", "Spain", "Italy", "France", "UK", "Greece"]
};
然后函数应该返回每个键的所有记录作为输出 例如:根据 emp =“Mary”
进行过滤结果:
var result = {
"emp": ["Mary"],
"rank": [2],
"role": ["Junior"],
"country": ["Spain"]
}
我尝试执行此功能,但没有成功,因为它不适用于此数据模型
var result = records.filter(function(item){
return item[emp] = "Mary";});
不管我上面的评论如何......
结果结构并没有真正的意义,它应该是完全基于字符串的键值条目的对象。因此,人们甚至可以质疑源数据的结构,它完全粉碎了每个雇主实体。人们应该拥有一种以真正的雇主实体为特色的结构,例如:对于第一个...
.{ name: "Rob", rank:"1", role: "Senior", country: "Germany" }
...OP 正在寻找的结果的数据结构可以这样实现...
const records = {
emp: ["Rob", "Mary", "Alex", "Martha", "Sam", "Peter"],
rank: [1, 2, 3, 4, 5, 6],
role: ["Senior", "Junior", "Mid-Senior", "Senior", "Junior", "Super Senior"],
country: ["Germany", "Spain", "Italy", "France", "UK", "Greece"],
};
// what the OP did ask for
const { emp: employeeNameList, ...searchData } = records;
const indexOfEmployee = employeeNameList.indexOf('Mary');
const originallyAskResult = {
emp: [employeeNameList.at(indexOfEmployee)],
...Object
.entries(searchData)
.reduce((resultData, [key, employeeRelatedList]) => {
resultData[key] = [employeeRelatedList.at(indexOfEmployee)];
return resultData;
}, {}),
}
console.log({ originallyAskResult });