【问题标题】:Filter method on multidimensional array多维数组的过滤方法
【发布时间】:2017-07-12 08:31:53
【问题描述】:

我有一个id 和我用这些过滤一个多维数组。我的代码是:

 service.fakedata.map(f=>{
          f.results.map(r=>{
             r = r.filter(m=> m.rId !== id)
          })
 })

我的数组是:

"services": [
    {
        "id": "1839f72e-fa73-47de-b119-49fb971a5730",
        "name": "In I/O Route",
        "url": "http://wwww.in.io/[param1]/[param2]",
        "inputParams": [
            {
                "id": "e74a6229-4c08-43a1-961f-abeb887fa90e",
                "name": "in1",
                "datatype": "string"
            },
            {
                "id": "e74a6229-4c08-43a1-961f-abeb887fa90o",
                "name": "in2",
                "datatype": "string"
            }
        ],
        "isArrayResult": false,
        "results": [
            {
                "id": "ef7c98db-9f12-45a8-b3fb-7d09a82abe3d",
                "name": "out1",
                "datatype": "string",
                "fakedatatype": [
                    "address",
                    "city"
                ]
            },
            {
                "id": "9b178ded-af27-43df-920f-daab5ad439b9",
                "name": "out2",
                "datatype": "string",
                "fakedatatype": [
                    "internet",
                    "url"
                ]
            }
        ],
        "routeParameters": [
            "param1",
            "param2"
        ],
        "fakedata": [
            {
                "id": "b0376694-9612-43d2-93ed-c74264df962e",
                "url": "http://wwww.in.io/wood/good",
                "params": [
                    {
                        "key": "param1",
                        "value": "wood"
                    },
                    {
                        "key": "param2",
                        "value": "good"
                    }
                ],
                "inputParams": [
                    {
                        "iId":"e74a6229-4c08-43a1-961f-abeb887fa90e",
                        "key": "in1",
                        "value": "m"
                    },
                    {
                        "iId":"e74a6229-4c08-43a1-961f-abeb887fa90o",
                        "key": "in2",
                        "value": "z"
                    }
                ],
                "results": [
                    {
                        "rId": "ef7c98db-9f12-45a8-b3fb-7d09a82abe3d",
                        "key": "out1",
                        "value": "result1",
                        "fakedatatype": [
                            "address",
                            "city"
                        ]
                    },
                    {
                        "rId": "9b178ded-af27-43df-920f-daab5ad439b9",
                        "key": "out2",
                        "value": "result2",
                        "fakedatatype": [
                            "internet",
                            "url"
                        ]
                    }
                ]
            }
        ]
    }
]

在这种情况下,过滤器正在工作(当我检查 console.log 时)但它不会改变 fakedata 数组。

我的代码有什么问题?

【问题讨论】:

    标签: javascript arrays multidimensional-array ecmascript-6


    【解决方案1】:

    来自https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/map

    map() 方法创建一个新数组,其结果是在调用数组中的每个元素上调用提供的函数。

    【讨论】:

      【解决方案2】:

      根据@H77 的建议,我更改了我的代码,现在我的代码看起来像这样,一切正常

       const s =  service.fakedata.map(f=>{
                f.results = f.results.map(r=>{
                  return r.filter(m=> m.rId !== id)
                })
              })
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-09
        • 2021-05-24
        • 2018-09-20
        • 1970-01-01
        相关资源
        最近更新 更多