【问题标题】:How can I check if an object is returned from a filter call?如何检查过滤器调用是否返回了对象?
【发布时间】:2018-01-04 20:59:27
【问题描述】:

我试图返回真或假,但过滤器方法返回一个新数组,其中包含与返回匹配的对象。是否有可能只返回true?我查看了包含原型,但这似乎也返回了整个对象。

我已经尝试了以下...

let check = this.props.data.filter(obj => {
  return obj.idNum.includes(value);
});

let check = this.props.data.map(obj => {
  return obj.idNum.includes(value);
});

let check = this.props.data.filter(obj => {
  return obj.idNum.includes(value) : true ? false;
});

我真的只是想检查对象数组是否包含我正在寻找的值。我正在检查每个对象的 idNum 是否匹配。

【问题讨论】:

  • 除了 JanS 的建议(这是最好的方法)之外,filter 将返回一个数组,您可以检查长度属性,如果为零或其他任何内容为真,则该属性为假:@987654324 @.
  • 一些原型对于任何匹配都返回 true。因此,如果我的 ID 是 00010,它会在 0、00、000、0001、02001、01230 上返回 true - 我正在寻找完全匹配
  • 嗯,顺便说一句,你最后一次尝试的语法不正确。三元运算符应类似于obj.idNum.includes(value) ? true : false。此外,它不提供任何逻辑,在这种情况下绝对可以省略。
  • 哦,是的 - 这是一个错字,抱歉

标签: javascript arrays reactjs


【解决方案1】:

看看数组.some方法。你可以这样使用它:

let check = this.props.data.some(obj => {
    return obj.idNum === value;
});

如果给定的函数对任何数组元素返回 true,则 some 方法返回 true。

【讨论】:

  • 我试过了。假设 ID 为 000020 - 上述方法为 0、00、000、0002、00001、001010 等返回 true...
  • @user3622460 你的 ID 是字符串,对吗?如果是这样,请不要使用包含,直接比较。例如:return obj.idNum === value。我将编辑我的答案。
猜你喜欢
  • 2017-08-29
  • 2022-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-12
  • 1970-01-01
  • 2016-01-15
相关资源
最近更新 更多