You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue中过滤JSON对象,获取cost为0.00的列表项

解决嵌套数组过滤问题:保留cost为"0.00"的列表项

看起来你卡在了嵌套数组的过滤逻辑上——你的需求是保留所有标签结构,但仅保留每个标签内cost为"0.00"的列表项,但目前的代码逻辑搞反了层级,而且没有正确修改标签内的列表数据。

你的代码问题出在哪?

你用了两层filter,但外层的filter是用来筛选标签的,而你返回的是listings.filter()的结果(一个数组)。在JavaScript里,非空数组会被判定为true,空数组为false,所以这段代码的实际效果是:保留那些至少有一个列表项的标签,但完全没有过滤标签内的列表项,更没有修改标签的listings属性。另外,外层filter的参数命名也容易混淆——你写的(listings)实际是每个标签对象,建议命名为tag来提升可读性。

正确的实现方式

我们需要用map遍历所有标签(保留标签原有结构),同时对每个标签内的listings数组做过滤,最后返回更新后的标签对象:

filteredListings() {
  // 遍历每个标签,保留原有属性,仅替换过滤后的listings
  return this.tags.map(tag => {
    // 过滤当前标签下cost为"0.00"的列表项
    const validListings = tag.listings.filter(l => l.cost === "0.00");
    // 返回新的标签对象,避免直接修改原数据(推荐做法)
    return { ...tag, listings: validListings };
  });
}

额外需求:移除无有效列表项的标签

如果你还想把那些过滤后listings为空的标签也删掉,可以在map之后再加一层filter:

filteredListings() {
  return this.tags.map(tag => {
    const validListings = tag.listings.filter(l => l.cost === "0.00");
    return { ...tag, listings: validListings };
  }).filter(tag => tag.listings.length > 0); // 移除没有符合条件列表项的标签
}

内容的提问来源于stack exchange,提问作者Udders

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 11:07:27