首页 > 解决方案 > nodejs我如何过滤对象数组

问题描述

我有一个像这样的对象的数组列表:

[
  [
    {
      address: 'x-x-x-x',
      listed: false
    }
  ],
  [
    {
      address: 'x-x-x-x',
      listed: false
    }
  ],
  [
    {
      address: 'x-x-x-x',
      listed: false
    }
  ],
  [
    {
      address: 'x-x-x-x',
      listed: false
    }
  ],
  [
    {
      address: 'x-x-x-x',
      listed: false
    }
  ],
  [
    {
      address: 'x-x-x-x',
      listed: true
    }
  ]
]

现在我想过滤列出的所有对象,但它不起作用,我尝试了库 lodash,我尝试了函数过滤器。但它不起作用。我做错了什么?

            results = await Promise.all(promiseArr);

            const data = lodash.filter(results, {
                listed: true
            });

            console.log(results);

标签: node.jsarraysobject

解决方案


不确定内部数组中是否会有多个元素,但这无论如何都会起作用。

const yourArray = [
  [
    {
      address: 'x-x-x-x',
      listed: false
    },
    {
      address: '1-x-x-x',
      listed: true
    }
  ],
  [
    {
      address: '2-x-x-x',
      listed: true
    }
  ]
]

const newArray = yourArray.reduce((previousValue, currentValue) => {
  const listedTrueObjects = currentValue.filter(obj => {
    return obj.listed === true
  })
  previousValue = previousValue.concat(listedTrueObjects)
  return previousValue
}, [])

console.log(newArray)

编辑:没有看到你的低代码......这应该工作。

results = await Promise.all(promiseArr);

const data = results.reduce((previousValue, currentValue) => {
  const listedTrueObjects = currentValue.filter(obj => {
    return obj.listed === true
  })
  previousValue = previousValue.concat(listedTrueObjects)
  return previousValue
}, [])

console.log(results);

推荐阅读