当前位置: 首页 > 知识库问答 >
问题:

根据每个值的内容过滤掉JSON数组[重复]

顾正初
2023-03-14

假设使用JSON.parse我在一个数组中一起得到了4个可能的答案(像选择题测验)。那个数组的每个值都有一个“特征”(我不知道还能怎么称呼它)。我想通过数组的每个值寻找特定的特征,并过滤掉那些不符合条件的值。

示例数组:

0: {correct: false}
1: {correct: true}
2: {correct: false}
3: {correct: false}

数组的第一个值(1)是正确答案,因为它的“特征”通过说它是“真”来指示它。我想让控制台打印出正确的数值。

示例:正确答案为:1

谢谢你的任何帮助

共有2个答案

皇甫聪
2023-03-14

正如Maheer Ali所说,您可以使用Array#findIndex,但它将返回一个值-满足条件的第一个值。在您的示例中,如果有许多对象的correct键等于true,那么您仍然会得到其中一个。

因此,如果您希望所有对象都满足要求,则有许多解决方案。

正如Maheer Ali在评论中建议的那样,您可以尝试使用Array#reduce

更短,并且在数组上有一个唯一的循环:

const arr = [
     {correct: false},
     {correct: true},
     {correct: false},
     {correct: true},
  ],
  filtered = arr.reduce((acc, item, index) => ((item.correct) ? [...acc, index] : acc), []);

console.log(`the correct answers are ${filtered.join(', ')}`);
慕迪
2023-03-14

您可以使用findIndex(),它返回与条件匹配的数组第一个元素的索引。

const arr = [
   {correct: false},
   {correct: true},
   {correct: false},
   {correct: false},
]

console.log(`the correct answer is` + arr.findIndex(x => x.correct))
 类似资料:
  • 过滤掉数组中的非唯一值。 使用 Array.filter() 滤除掉非唯一值,使数组仅包含唯一值。 const filterNonUnique = arr => arr.filter(i => arr.indexOf(i) === arr.lastIndexOf(i)); filterNonUnique([1, 2, 2, 3, 4, 4, 5]); // [1,3,5]

  • 问题内容: 我有一个数组,用于保存结果集中的值。我检索数组的代码的概要是: 获得的样本表是: 在此处输入图片说明 从表中可以明显看出,第二列的beam_current值接近0到220:(0,10,20 … 220)的每个十的整数倍。我想过滤我的数据集,以便对于10的倍数,只选择最接近该倍数的行。为此,我: 从的所有行中减去10,然后找到获得的差值:差最小的行是我感兴趣的唯一行,即10的倍数。T 重

  • 本文向大家介绍根据多个过滤器JavaScript从JSON数据计算平均值,包括了根据多个过滤器JavaScript从JSON数据计算平均值的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个像这样的对象数组- 我们需要编写一个包含一个这样的数组的JavaScript函数。 该函数应执行以下操作- 将重复的供应商分组为一个唯一的单独对象(通过重复,我们指的是具有相同“ SupplierName”

  • 问题内容: 鉴于此输入: 我正在尝试使用jq构造一个过滤器,该过滤器返回s的所有对象,这些s 的内部数组中 不 包含“数据” ,并且输出以换行符分隔。对于以上数据,我想要的输出是 我想我与此有点接近: 但过滤器不正确,并且无法编译(获取)。 问题答案: 很接近!在表达式中,您必须在之前使用管道()。 该滤波器产生预期的输出。 的JQ食谱具有语法的一个例子。 例如,我只想要类型键包含“ house”

  • 问题内容: 我在javascript中有一组对象。内容看起来像这样; 我想保留一些对象并删除其余的对象。如果object属性为2或34,则将保留对象。其他对象被删除。遗嘱的结果看起来像这样; 我正在使用node.js v6.91。 编辑:有人建议我使用过滤器来解决这种问题。欢迎使用过滤器技术的答案。 问题答案: 您可以尝试以下方法1和2: 方法1 :(使用) 注意:这将返回一个新数组,并且不会修改

  • 从数组中移除 falsey 值元素。 使用 Array.filter() 过滤掉数组中所有 假值元素(false, null, 0, "", undefined, 和 NaN)。 const compact = arr => arr.filter(Boolean); compact([0, 1, false, 2, '', 3, 'a', 'e' * 23, NaN, 's', 34]); //