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

Having a conditon on every array element that's a part of an object

只需要提出一个条件,我需要根据条件是否为真来显示块

我有一个结构如下的数组

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

基本上我需要以这样一种方式进行检查:如果每个对象中 "values" 内的所有条目均为 0,则 return 为假。如果 "values" 中的任何条目不是 0 return true;

试过类似的东西。但是好像不工作

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

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

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

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

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

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