JavaScript 具有键数组的对象组和数组
JavaScript Group and array of objects with an array of keys
我有这段代码,目前正在使用打字稿,但现在没关系。我只需要一个工作代码。
const ids = [3, 5];
const data = [
{
user: 'faith',
nums: [1, 2, 3, 4]
},
{
user: 'ngozi',
nums: [4,7,2,45,6]
},
{
user: 'chioma',
nums: [2,3,5,7]
},
{
user: 'peter',
nums: [1,5,7,9]
},
{
user: 'goodnews',
nums: [2,4,8,0]
},
{
user: 'peter',
nums: [1,3,5,7]
}
];
正在寻找一种方法,使用 nums 中关于 id 的过滤器对数据进行分组。
预期结果是
const result = {
3: [
{
user: 'faith',
nums: [1, 2, 3, 4]
},
{
user: 'chioma',
nums: [2,3,5,7]
},
{
user: 'peter',
nums: [1,3,5,7]
}
],
5: [
{
user: 'chioma',
nums: [2,3,5,7]
},
{
user: 'peter',
nums: [1,5,7,9]
},
{
user: 'peter',
nums: [1,3,5,7]
}
]
}
lodash 选项也是允许的
const ids = [3, 5];
const data = [{
user: 'faith',
nums: [1, 2, 3, 4]
},
{
user: 'ngozi',
nums: [4, 7, 2, 45, 6]
},
{
user: 'chioma',
nums: [2, 3, 5, 7]
},
{
user: 'peter',
nums: [1, 5, 7, 9]
},
{
user: 'goodnews',
nums: [2, 4, 8, 0]
},
{
user: 'peter',
nums: [1, 3, 5, 7]
}
];
const result = {};
// Using a forEach loop to go through the arrays
data.forEach(item => {
ids.forEach(id => {
if (item.nums.includes(id)) {
if (!result[id]) result[id] = [];
result[id].push(item);
}
});
});
console.log(result);
const ids = [3, 5];
const data = [{
user: 'faith',
nums: [1, 2, 3, 4]
},
{
user: 'ngozi',
nums: [4, 7, 2, 45, 6]
},
{
user: 'chioma',
nums: [2, 3, 5, 7]
},
{
user: 'peter',
nums: [1, 5, 7, 9]
},
{
user: 'goodnews',
nums: [2, 4, 8, 0]
},
{
user: 'peter',
nums: [1, 3, 5, 7]
}
];
let result = {};
ids.map((num) => {
let filteredRes = data.filter((x) => {
if (x.nums.indexOf(num) > -1) {
return x
}
});
result[num] = filteredRes
});
console.log(result);
您可以尝试映射 ID,然后过滤数据数组以获取具有该 ID 的对象。
我有这段代码,目前正在使用打字稿,但现在没关系。我只需要一个工作代码。
const ids = [3, 5];
const data = [
{
user: 'faith',
nums: [1, 2, 3, 4]
},
{
user: 'ngozi',
nums: [4,7,2,45,6]
},
{
user: 'chioma',
nums: [2,3,5,7]
},
{
user: 'peter',
nums: [1,5,7,9]
},
{
user: 'goodnews',
nums: [2,4,8,0]
},
{
user: 'peter',
nums: [1,3,5,7]
}
];
正在寻找一种方法,使用 nums 中关于 id 的过滤器对数据进行分组。 预期结果是
const result = {
3: [
{
user: 'faith',
nums: [1, 2, 3, 4]
},
{
user: 'chioma',
nums: [2,3,5,7]
},
{
user: 'peter',
nums: [1,3,5,7]
}
],
5: [
{
user: 'chioma',
nums: [2,3,5,7]
},
{
user: 'peter',
nums: [1,5,7,9]
},
{
user: 'peter',
nums: [1,3,5,7]
}
]
}
lodash 选项也是允许的
const ids = [3, 5];
const data = [{
user: 'faith',
nums: [1, 2, 3, 4]
},
{
user: 'ngozi',
nums: [4, 7, 2, 45, 6]
},
{
user: 'chioma',
nums: [2, 3, 5, 7]
},
{
user: 'peter',
nums: [1, 5, 7, 9]
},
{
user: 'goodnews',
nums: [2, 4, 8, 0]
},
{
user: 'peter',
nums: [1, 3, 5, 7]
}
];
const result = {};
// Using a forEach loop to go through the arrays
data.forEach(item => {
ids.forEach(id => {
if (item.nums.includes(id)) {
if (!result[id]) result[id] = [];
result[id].push(item);
}
});
});
console.log(result);
const ids = [3, 5];
const data = [{
user: 'faith',
nums: [1, 2, 3, 4]
},
{
user: 'ngozi',
nums: [4, 7, 2, 45, 6]
},
{
user: 'chioma',
nums: [2, 3, 5, 7]
},
{
user: 'peter',
nums: [1, 5, 7, 9]
},
{
user: 'goodnews',
nums: [2, 4, 8, 0]
},
{
user: 'peter',
nums: [1, 3, 5, 7]
}
];
let result = {};
ids.map((num) => {
let filteredRes = data.filter((x) => {
if (x.nums.indexOf(num) > -1) {
return x
}
});
result[num] = filteredRes
});
console.log(result);
您可以尝试映射 ID,然后过滤数据数组以获取具有该 ID 的对象。