Javascript 根据每个值的内容筛选出JSON数组
假设使用JSON.parse,我在一个数组中得到了4个可能的答案(比如多项选择题)。该数组的每个值都有一个“特征”(我不知道如何调用它)。我希望通过数组的每个值查找特定的特征,并过滤掉那些不符合条件的值 示例阵列:Javascript 根据每个值的内容筛选出JSON数组,javascript,arrays,json,object,Javascript,Arrays,Json,Object,假设使用JSON.parse,我在一个数组中得到了4个可能的答案(比如多项选择题)。该数组的每个值都有一个“特征”(我不知道如何调用它)。我希望通过数组的每个值查找特定的特征,并过滤掉那些不符合条件的值 示例阵列: 0: {correct: false} 1: {correct: true} 2: {correct: false} 3: {correct: false} 数组的第一个值(1)是正确答案,因为它的“特征”表示它为“真”。我想让控制台打印出正确的数值 正确答案是:1 感谢所有帮助您
0: {correct: false}
1: {correct: true}
2: {correct: false}
3: {correct: false}
数组的第一个值(1)是正确答案,因为它的“特征”表示它为“真”。我想让控制台打印出正确的数值
正确答案是:1
感谢所有帮助您可以使用它返回与条件匹配的数组第一个元素的索引
const arr=[
{正确:错误},
{正确:正确},
{正确:错误},
{正确:错误},
]
log(`正确答案是`+arr.findIndex(x=>x.correct))
As,您可以使用,但它将返回一个值—第一个满足条件的值。在您的示例中,如果有许多对象的correct
键等于true
,您仍然会得到其中一个
因此,如果希望所有对象都满足要求,有很多解决方案
Array#reduce
根据评论中的建议,您可以尝试使用
更短,并且在阵列上具有唯一的循环:
const arr=[
{正确:错误},
{正确:正确},
{正确:错误},
{正确:正确},
],
已过滤=arr.reduce((acc,item,index)=>((item.correct)?[…acc,index]:acc),[]);
log(`正确答案是${filtered.join(',')}`)代码>我删除了旧的注释。reduce()
single looparr.reduce((ac,a,I)=>a.correct?[…ac,I]:ac,[])
Nice(更好)建议。我把它加到了我的答案中快速说明:“JSON数组”不存在。