在作为对象一部分的每个数组元素上都有一个条件

问题描述 投票:0回答:4

仅需提出一个条件,在该条件为真与否的情况下,我需要根据该条件显示一个块

我有一个具有以下结构的数组

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。如果“值”中的任何条目不是0,则返回true;

尝试过类似的操作。但似乎不起作用

const isZero= (currentValue) => currentValue === 0;
console.log(data.every(isZero));
javascript ecmascript-6 ecmascript-5
4个回答
2
投票

您可以检查数组和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

1
投票

您可以使用两个嵌套的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 check = data => data.some(({ values }) => values.some(v => v !== 0))
console.log(check(data))
console.log(check(data2))

1
投票

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

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)
);

1
投票

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

data.some(item => item.values.some(v => v !== 0));
© www.soinside.com 2019 - 2024. All rights reserved.