首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据每个值的内容筛选出JSON数组

根据每个值的内容筛选出JSON数组
EN

Stack Overflow用户
提问于 2019-04-19 07:37:54
回答 2查看 2.3K关注 0票数 5

让我们说,使用JSON.parse,我已经在一个数组中得到了4个可能的答案(就像一个选择题)。该数组的每个值都有一个“特性”(我不知道如何称呼它)。我希望通过数组的每个值寻找一个特定的特征,并筛选出那些不符合条件的值。

示例数组:

代码语言:javascript
复制
0: {correct: false}
1: {correct: true}
2: {correct: false}
3: {correct: false}

数组的第一个值(1)是正确的答案,因为它的“特性”表示它是“真”。我想让控制台打印出正确值的数量。

正确的答案是:1

谢谢你的帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-19 07:51:16

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

因此,如果您希望所有的对象都满足需求,那么有许多解决方案。

Array#reduce

正如Maheer Ali在注释中所建议的,您可以尝试使用Array#reduce

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

代码语言:javascript
复制
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(', ')}`);

Array#mapArray#filter

尝试Array#map (与Array#filter一起删除false值):

代码语言:javascript
复制
const arr = [
     {correct: false},
     {correct: true},
     {correct: false},
     {correct: true},
  ],
  filtered = arr.map((item, index) => ((item.correct) ? index : false)).filter((item) => (item));

console.log(`the correct answers are ${filtered.join(', ')}`);

但是,数组将被循环两次(一次是Array#map,另一次是Array#filter )。

for...in语句

最后,您可以通过使用for...in循环迭代原始数组来将索引推送到空数组中:

代码语言:javascript
复制
const arr = [
     {correct: false},
     {correct: true},
     {correct: false},
     {correct: true},
  ],
  filtered = [];
  
for (let index in arr) {
  if (arr[index].correct) {
    filtered.push(index);
  }
}

console.log(`the correct answers are ${filtered.join(', ')}`);

票数 4
EN

Stack Overflow用户

发布于 2019-04-19 07:39:59

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

代码语言:javascript
复制
const arr = [
   {correct: false},
   {correct: true},
   {correct: false},
   {correct: false},
]

console.log(`the correct answer is` + arr.findIndex(x => x.correct))

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55758264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档