javascript - 重新排序和过滤对象数组

标签 javascript filter

我正在寻找一种简单的方法,不仅可以过滤对象数组,还可以对对象数组重新排序,以便以正确的顺序过滤和排序输出格式。这是一个示例数组

[{
  "id": "4",
  "fileName": "fileXX",
  "format": "mp3"
}, {
  "id": "5",
  "fileName": "fileXY",
  "format": "aac"
  }
}, {
  "id": "6",
  "fileName": "fileXZ",
  "format": "opus"
  }
}]

数组可能更长并且包含不同的格式,但目标是始终只允许 mp3 和 aac 并且让 aac 在数组中排在第一位。这个例子的结果是

[{
  "id": "5",
  "fileName": "fileXY",
  "format": "aac"
  }
},{
  "id": "4",
  "fileName": "fileXX",
  "format": "mp3"
}]

应避免按字母顺序排序,因为所需的顺序稍后可​​能会更改。

最佳答案

您可以使用所需格式的对象进行过滤,并按所需顺序对其进行排序。

var data = [{ id: "4", fileName: "fileXX", format: "mp3" }, { id: "5", fileName: "fileXY", format: "aac" }, { id: "6", fileName: "fileXZ", format: "opus" }],
    order = { aac: 1, mp3: 2 },
    result = data
        .filter(({ format }) => format in order)
        .sort((a, b) => order[a.format] - order[b.format]);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 重新排序和过滤对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50353342/

相关文章:

javascript - Tokbox 销毁 session - 由管理员执行,不是 session 的一部分

javascript - 不明白这个 setTimeout 如何/为什么解决我的 IE8 问题

javascript - 同位素和灯箱,如何仅在灯箱中显示可见(过滤)图像

python - 从 ZMQ 子队列获取特定消息

javascript - 如何使用 lodash 过滤对象的键?

javascript - 使用ajax在html中加载音频

javascript - 如何使用 npm 在 ES6 中导入 moment.js?

javascript - 根据输入中的值重新获取 FullCalendar 事件

android - 当我删除字符时过滤器不更新列表

javascript - AngularJS:使用从输入中获取的两个参数过滤结果