【问题标题】:How to obtain several values after using Array.filter?使用 Array.filter 后如何获取多个值?
【发布时间】:2019-05-01 22:40:55
【问题描述】:

我已成功过滤我的数组,以便显示的唯一对象是 Course 中包含字符串 'eastern' 的对象。

// Empty array + object that is pushed onto array following Btn click

var dataSet = [];

dataObj = {Course: courseSelect.value, Score: scoreText.value, Pars: parsText.value, Birdies: birdiesText.value};

dataSet.push(dataObj);

// Filter

findVal = dataSet.filter(findVal => findVal.Course === 'eastern');

现在唯一的问题是,如果我想通过使用console.log(findVal.Score) 仅从该对象中分离出 Score 值,它会返回 undefined。我希望它从过滤后的数组中的每个对象返回每个 Score 值,但它没有。

我该如何克服这个问题?

【问题讨论】:

  • 我看不到任何数组。 dataSet 长什么样子?
  • 不是finalVal 是一个数组吗?您需要访问索引
  • 您发布了dataObj,但.filter() 代码涉及dataSet。请注意.filter() 返回一个数组,所以当然不会有.Score 属性直接在该数组上。
  • 你有// Array上面的东西显然是一个对象
  • 对不起大家,我的帖子弄错了。我已经相应地对其进行了编辑。

标签: javascript arrays filter


【解决方案1】:

由于findVal 是一个数组,您应该将map 方法与解构 方法结合使用,以便从数组中获取每个项目的Score 属性。

findVal = dataSet
           .filter(findVal => findVal.Course === 'eastern')
           .map(({Score}) => Score);

【讨论】:

  • 我认为解构在这种情况下没有用,反而会使代码更脏。 .map(x => x.Score); 更干净。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-19
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 1970-01-01
  • 2018-08-17
相关资源
最近更新 更多