javascript - ES6 将所有名称过滤为一个函数

标签 javascript arrays ecmascript-6 refactoring

我正在尝试过滤对象数组并根据是否匹配分配多个变量。

这样做的原因是,我可以在字符串文字中使用变量,显示值。

我已经设法将其分解,但我看到我重复了很多,并且认为这不是最有效的方法。

如有任何帮助,我们将不胜感激。

let stats = [{name: "goals", value: 5},
{name: "losses", value: 20},
{name: "wins", value: 48},
{name: "draws", value: 23},
{name: "fwd_pass", value: 1533},
{name: "goal_assist", value: 2},
{name: "appearances", value: 80},
{name: "mins_played", value: 6953},
{name: "backward_pass", value: 308}]

//const { player , stats } = playerData[0]

const appearances = stats.filter(({name} , i) => {
      return name == "appearances"
});
const goals = stats.filter(({name} , i) => {
      return name == "goals"
});
const assists = stats.filter(({name} , i) => {
      return name == "goal_assist"
});
const mins = stats.filter(({name} , i) => {
      return name == "mins_played"
});
const fwdPass = stats.filter(({name} , i) => {
      return name == "fwd_pass"
});
const backPass = stats.filter(({name} , i) => {
      return name == "backward_pass"
});

最佳答案

您的方法为每个变量返回数组。另一种方法是创建一个对象,其键是名称。这样,您将能够使用名称访问并获取特定对象。

let stats = [{name: "goals", value: 5},{name: "losses", value: 20},{name: "wins", value: 48},{name: "draws", value: 23},{name: "fwd_pass", value: 1533},{name: "goal_assist", value: 2},{name: "appearances", value: 80},{name: "mins_played", value: 6953},{name: "backward_pass", value: 308}],
    variables = stats.reduce((a, c) => Object.assign(a, {[c.name]: c}), Object.create(null));

console.log(`Access through key: ${variables.fwd_pass.value}`);

关于javascript - ES6 将所有名称过滤为一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53217952/

相关文章:

javascript - Angular 中的 D3 力模拟

javascript - Chart Js图上标记X值

javascript正则表达式解析数组语法字符串几乎可以工作

javascript - 使用traceur编译器编写ES6

javascript - Jquery 无法返回动画菜单列表上的事件状态

c - C 数组从 1 开始

java - 如何将对象添加到另一个类Java中的数组

javascript - 从父级调用重写的静态方法

javascript - VideoJS v5 - 在 ES6 中添加自定义组件 - 我做得对吗?

javascript - 有没有办法在 d3.js 中获取路径的子集/部分?