【问题标题】:How to check if a key is empty or not in an array of objects? [duplicate]如何检查对象数组中的键是否为空? [复制]
【发布时间】:2019-03-28 09:02:11
【问题描述】:

我正在做本机应用程序。我得到如下 json 响应。

[
  {
    id: '508',
    class: 'class1',
    value: '0',
    percentage: '8.90',
    color: 'black'
  },
  {
    id: '509',
    class: 'class2',
    value: '0',
    percentage: '2.40',
    color: 'black'
  },
  {
    id: '510',
    class: 'class3',
    value: '0',
    percentage: '56.40',
    color: 'black'
  },
  {
    id: '511',
    class: 'class',
    value: '0',
    percentage: '2.40',
    color: 'black'
  }
]

我必须检查所有value 属性是否为空。如果都是空的,我必须做一些动作,否则条件其他动作。

  const emptyValues = sortedData.map(value => value.key);
  console.log('emptyValues data', emptyValues);

【问题讨论】:

  • 注意:我知道null 的链接问题检查并且这篇文章要求空值。但是,逻辑是相同的,并且为它定义了解决方案的方法

标签: javascript arrays react-native


【解决方案1】:

使用Array.every() 检查是否所有value 键都是'0'(或任何您对空的定义):

const data = [{"id":"508","class":"class1","value":"0","percentage":"8.90","color":"black"},{"id":"509","class":"class2","value":"0","percentage":"2.40","color":"black"},{"id":"510","class":"class3","value":"0","percentage":"56.40","color":"black"},{"id":"511","class":"class","value":"0","percentage":"2.40","color":"black"}]

const doEmptyAction = data.every(o => o.value === '0')

console.log(doEmptyAction)

【讨论】:

  • 我的建议是将回调作为o => isEmpty(o.value) 并有一个自定义的isEmpty 函数,看起来像isEmpty = (value) => value === undefined || value === null || value === ''。我们还可以检查其中是否有空对象/数组。所以 OP 确实定义了他们的空标准
  • 这会返回真还是假?这会检查所有索引,对吧?
  • 但是,它总是返回false?甚至值都是 0
  • 你对空的定义是什么?
  • 是的,但是如果它找到一个非空值,它将停止并返回false。准备好链接中每个的文档。
【解决方案2】:
let arr = [
  {
    id: '508',
    class: 'class1',
    value: '0',
    percentage: '8.90',
    color: 'black'
  },
  {
    id: '509',
    class: 'class2',
    value: '0',
    percentage: '2.40',
    color: 'black'
  },
  {
    id: '510',
    class: 'class3',
    value: '0',
    percentage: '56.40',
    color: 'black'
  },
  {
    id: '511',
    class: 'class',
    value: '0',
    percentage: '2.40',
    color: 'black'
  }
];

let desiredVal = arr.map((obj) => {
   if(obj.value){
      //do something
   }
});

【讨论】:

  • 只是一般建议,没有解释的答案是不完整的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-16
  • 1970-01-01
  • 1970-01-01
  • 2011-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多