在javascript中过滤不同/映射对象数组?

old_blueyes

我有一个对象数组,我想从中过滤不同的电影标题并创建另一个对象数组。

    var movs = [
        {
            "Id": 3446,
            "FilmId": "ST00000358",
            "FilmPackageId": null,
            "Title": "Harry Potter and the Goblet of Fire",
        },
        {
            "Id": 3447,
            "FilmId": "ST00000358",
            "FilmPackageId": null,
            "Title": "Harry Potter and the Goblet of Fire",
        },
        {
            "Id": 3448,
            "FilmId": "ST00000359",
            "FilmPackageId": null,
            "Title": "Harry Potter and the Order of the Phoenix",
        },
        {
            "Id": 3449,
            "FilmId": "ST00000360",
            "FilmPackageId": null,
            "Title": "Spider-Man: Into The Spider-Verse",
        },
        {
            "Id": 3450,
            "FilmId": "ST00000360",
            "FilmPackageId": null,
            "Title": "Spider-Man: Into The Spider-Verse",
        }
    ]

我想创建一个对象数组,这些对象过滤到不同的电影标题及其 ID。


    [
        {
            Title: 'Harry Potter and the Goblet of Fire',
            FilmId: 'ST00000358'
        },
        {
            Title: 'Harry Potter and the Order of the Phoenix',
            FilmId: 'ST00000359'
        },
        {
            Title: 'Spider-Man: Into The Spider-Verse',
            FilmId: 'ST00000360'
        }
    ]

我已经成功地获得了一系列不同的标题,如下所示,但是如果我向地图添加其他字段,它会返回整个数组,而不是不同的少数。


    const movies = [...new Set(movs.map(item => item.Title))];

这不起作用:

const movies = [
    ...new Set(
      movs.map((obj) => ({ label: obj.Title, value: obj.FilmId }))
    )
  ];
物联网

您可以filter基于特定的键使用 aSet然后使用map

var movs = [{ "Id": 3446, "FilmId": "ST00000358", "FilmPackageId": null, "Title": "Harry Potter and the Goblet of Fire", }, { "Id": 3447, "FilmId": "ST00000358", "FilmPackageId": null, "Title": "Harry Potter and the Goblet of Fire", }, { "Id": 3448, "FilmId": "ST00000359", "FilmPackageId": null, "Title": "Harry Potter and the Order of the Phoenix", }, { "Id": 3449, "FilmId": "ST00000360", "FilmPackageId": null, "Title": "Spider-Man: Into The Spider-Verse", }, { "Id": 3450, "FilmId": "ST00000360", "FilmPackageId": null, "Title": "Spider-Man: Into The Spider-Verse", } ];
let set = new Set();
const res = movs.filter(({FilmId})=>!set.has(FilmId) && set.add(FilmId)).map(({Title,FilmId})=>({Title,FilmId}));
console.log(res);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章