【问题标题】:Having a conditon on every array element that's a part of an object对作为对象一部分的每个数组元素都有一个条件
【发布时间】:2019-12-31 10:10:43
【问题描述】:

只需要提出一个条件,如果条件为真,我需要根据条件显示一个块

我有一个结构如下的数组

const data = [
  { name: "item1" , values : [0,0,0,0,0]},
  { name: "item2" , values : [0,0,0,0,0]},
  { name: "item3" , values : [0,0,0,0,0]}
] // return false

const data = [
  { name: "item1" , values : [0,0,0,0,0]},
  { name: "item2" , values : [0,1,0,0,0]},
  { name: "item3" , values : [0,0,0,0,0]}
] // return true

基本上我需要以这样的方式进行检查,如果每个对象中“值”内的所有条目都是 0,则返回 false。如果“values”中的任何条目不是 0,则返回 true;

尝试过这样的事情。但似乎不工作

const isZero= (currentValue) => currentValue === 0;
console.log(data.every(isZero));

【问题讨论】:

    标签: javascript ecmascript-6 ecmascript-5


    【解决方案1】:

    您可以检查数组和values

    const check = array => array.some(({ values }) => values.some(Boolean));
    
    console.log(check([{ name: "item1", values: [0, 0, 0, 0, 0] }, { name: "item2", values: [0, 0, 0, 0, 0] }, { name: "item3", values: [0, 0, 0, 0, 0] }])); // return false
    console.log(check([{ name: "item1", values: [0, 0, 0, 0, 0] }, { name: "item2", values: [0, 1, 0, 0, 0] }, { name: "item3", values: [0, 0, 0, 0, 0] }])); // return true

    【讨论】:

      【解决方案2】:

      您可以检查.some 数据对象是否具有不是0.some 值属性:

      const data = [
        { name: "item1" , values : [0,0,0,0,0]},
        { name: "item2" , values : [0,0,0,0,0]},
        { name: "item3" , values : [0,0,0,0,0]}
      ] // return false
      
      const data2 = [
        { name: "item1" , values : [0,0,0,0,0]},
        { name: "item2" , values : [0,1,0,0,0]},
        { name: "item3" , values : [0,0,0,0,0]}
      ] // return true
      
      
      const verify = data => data.some(({ values }) => values.some(num => num !== 0));
      console.log(
        verify(data),
        verify(data2)
      );

      【讨论】:

        【解决方案3】:

        您可以将some 应用于data,遍历所有项目,然后在每个项目上再次使用some 以查看其values 成员中是否有任何不是0 的值:

        data.some(item => item.values.some(v => v !== 0));
        

        【讨论】:

        • 1 只是一个指示。它应该是 0 以外的任何值
        猜你喜欢
        • 2019-08-05
        • 2013-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-29
        • 2015-03-17
        • 1970-01-01
        相关资源
        最近更新 更多