javascript 如何从数组中提取数字[已关闭]

j8ag8udp  于 2023-01-29  发布在  Java
关注(0)|答案(1)|浏览(136)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

昨天关门了。
Improve this question
基本上我有一个id数组,我只想返回一个简单的数组,看起来像这样

*[1,2,3]*

代替

*[0:[1] , 1:[2]]*

有没有办法
代码

const usersWhoHavePurchasedYourCourses = usersWhoHaveTokens.filter(
(user1: any) => {
  return user1.tokens
    ?.map((token: any) => parseInt(token.course_id))
    .includes(user.courses?.map((course: any) => course.id));
});

输出如下所示
output
正如我所说的,我不想返回这种输出。

vxf3dgd4

vxf3dgd41#

编辑

在尝试对您的逻辑进行反向工程时,您不希望通过检查用户是否至少有一门课程来进行过滤吗?我建议使用Array.prototype.some作为您的过滤结果。

const user = { courses: [{ id: 1 }, { id: 2 }] };

const usersWhoHaveTokens = [
  { id: 1, tokens: [{ course_id: '1' }] },
  { id: 2, tokens: [{ course_id: '2' }] },
  { id: 3, tokens: [{ course_id: '3' }] },
];

// Compute the set, for faster processing
const userCourseIds = new Set(user.courses.map((course) => course.id));

const usersWhoHavePurchasedYourCourses = usersWhoHaveTokens
  .filter(({ tokens }) => tokens
    .some((token) => userCourseIds.has(parseInt(token.course_id))))
  .map(({ id }) => id);

console.log(usersWhoHavePurchasedYourCourses); // [1, 2]

原始回复

如果对象是"object"类型,则需要将其转换为数组,然后将其展开。

const
  obj = { 0: [1], 1: [2] },
  arr = Object.values(obj).flat();

console.log(JSON.stringify(arr)); // [1, 2]

如果要保留索引:

const
  obj = { 1: [2], 5: [6] },
  arr = Object.entries(obj).reduce((acc, [index, value]) => {
    acc[+index] = value;
    return acc;
  }, []).map(([value]) => value);

console.log(JSON.stringify(arr)); // [null, 2, null, null, null, 6]

相关问题