如何按指定日期过滤嵌套对象数组且保留原整体结构
实现方案
你只需要遍历外层数组的每一项,对内层的user_data_stays数组做过滤即可,不需要用到some方法,根据是否需要保留原数组,有两种实现方式:
方式1:生成新数组,不修改原数据
如果你不希望改动原始的data数组,可以用map遍历加对象浅拷贝的方式实现:
const targetDate = '2021-10-01T12:55:00.000Z'; const filteredData = data.map(item => { return { // 拷贝外层对象的其他属性(比如id) ...item, user_data: { // 拷贝user_data下的其他属性,避免丢失 ...item.user_data, // 仅过滤符合日期条件的stay项 user_data_stays: item.user_data.user_data_stays.filter(stay => stay.date === targetDate) } }; });
方式2:直接修改原数组
如果允许改动原始的data数组,直接用forEach遍历修改即可:
const targetDate = '2021-10-01T12:55:00.000Z'; data.forEach(item => { item.user_data.user_data_stays = item.user_data.user_data_stays.filter(stay => stay.date === targetDate); });
处理后的结果会完整保留原数组的结构,仅user_data_stays数组中符合日期的项会被保留,不符合的会被剔除。
内容的提问来源于stack exchange,提问作者oakpep
相关产品推荐
相关产品推荐

