javascript - 对对象数组内的对象数组运行 `every` 方法

标签 javascript ecmascript-6 ecmascript-5

我正在尝试检查此双数组内的属性是否有任何长度

const cars = [
  {
    name: 'audi',
    options: [
      {
        color: 'white'
      },
      {
        color: 'black'
      }
    ]
  },
  {
    name: 'bmw',
    options: [
      {
        color: 'red'
      },
      {
        color: ''
      },
      {
        color: 'green'
      }
    ]
  }
]
const results = cars.map(({ options }) => options.every((opt) => opt.color.length))
const result = !results.includes(false)
console.log(result)
// It returns false cause bmw has an empty color property 

我通过使用 every 添加一个带有 bool 值的数组来完成此操作,然后检查该数组上是否有 false,但感觉没有必要。

如果嵌套数组内的任何给定属性有条件,是否有方法返回单个 bool 值?

最佳答案

只需将 every 也用作外部数组即可。

const
    cars = [{ name: 'audi', options: [{ color: 'white' }, { color: 'black' }] }, { name: 'bmw', options: [{ color: 'red' }, { color: '' }, { color: 'green' }] }],
    result = cars.every(({ options }) =>
        options.every(({ color: { length } }) => length)
    );

console.log(result);

关于javascript - 对对象数组内的对象数组运行 `every` 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64953205/

相关文章:

javascript - JavaScript 中对象定义中的对象括号表示法

javascript - Vue.js - 如何访问外部 Javascript/Jquery 函数

javascript - $.Variable in jquery,定义方式有些困惑

asynchronous - 有没有办法中止在 Electron 中发送的 ipc 异步请求?

javascript - 为什么 Array.prototype.filter() 在 Magnolia JavaScript 模型中抛出错误?

Javascript Object.defineProperty 设置属性更改时触发的方法

javascript - 正则表达式仅捕获匹配中捕获组的最后一个实例

javascript - rails : Update view multiple times in 1 action

reactjs - 导入 4 个文件夹深的文件

node.js - 模块.exports : is not a constructor error