首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >移除array - react本机内部数组的一项

移除array - react本机内部数组的一项
EN

Stack Overflow用户
提问于 2019-05-31 18:24:25
回答 2查看 230关注 0票数 0

我有一个有数组的json data。数组的每个元素都有名为items的数组。如果字符串与itemName不匹配,我想删除内部数组元素。我试过使用过滤方法,但它并不像预期的那样工作。它只返回匹配的内部数组元素,但也删除了所有外部数组元素。附注:查看代码、json数据、我得到的输出和预期输出。提前感谢

代码:

代码语言:javascript
复制
const update2 =
 state.menuResponse.map(
       item => {
        return item.items.filter(item => (item.itemName).includes("C"))
})

console.log("menuSearcheddd", update2)

Json数据

代码语言:javascript
复制
{
  "data": [
    {
      "menuHeader": "Starters",
      "items": [
        {
          "itemId": "1",
          "itemName": "burger",
        },
        {
          "itemId": "ITD1ZYTH",
          "itemName": "Cheese balls",
        }
      ]
    },
    {
      "menuHeader": "string",
      "items": [
        {
          "itemId": "1",
          "itemName": "burger",
        },
        {
          "itemId": "2",
          "itemName": "burger-non veg",
        }
      ]
    }
  ]
}

输出:

代码语言:javascript
复制
{
  "data": [
    {
      "items": [
        {
          "itemId": "ITD1ZYTH",
          "itemName": "Cheese balls",
        }
      ]
    },
    {
      "items": []
    }
  ]
}

应该是什么?

代码语言:javascript
复制
{
  "data": [
    {
      "menuHeader": "Starters",
      "items": [
        {
          "itemId": "ITD1ZYTH",
          "itemName": "Cheese balls",
        }
      ]
    },
    {
      "menuHeader": "string",
      "items": []
    }
  ]
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-31 18:41:59

删除外部元素不是因为filter方法,而是因为map方法。看,在您的map方法中,您忽略了所有其他属性,因为您只返回在items数组上处理的内容。

因此,代码应该看起来更像这样:

代码语言:javascript
复制
const update2 = state.menuResponse.map(item => ({ ...item, items: item.items.filter(subItem => subItem.itemName.includes('C')) }));

因此,在处理对象之前,从map方法返回对象内部的所有内容,并且只通过过滤数组来修改items属性,就像您已经这样做了。

我还没有成功测试它,但理论上应该可以工作...

票数 2
EN

Stack Overflow用户

发布于 2020-02-17 18:08:57

代码语言:javascript
复制
var list = this.state.materialList.filter(item => {
            //Filter Inner Array 
            var innerData = item.data.filter(dataItem => {
                return dataItem.qty > 0
            })
            // Assign value
            item.data = innerData;
            return item.Id > 0
        })
 console.log('Filtered List ',list);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56393278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档