我如何在另一个地图中进行映射,获取每个第一张地图的索引?

时间:2019-01-30 16:11:11

标签: javascript node.js dictionary

我有两个数组,一个是ID数组,例如:

fonogramas = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

用于存储信息的数组:

rank_completo = []

第二个是JSON数组,例如:

rank = [ { Tocadas: 1424,
    Artista: 'Felipe Araújo',
    id_Artista: 1663,
    Musica: 'Atrasadinha - Feat. Ferrugem - Ao Vivo',
    id_Musica: 44337,
    Mes: 1,
    Dia: 30,
    Tipo_Emissora: 2,
    Categoria_Radio: 'FM' },
{ Tocadas: 1356,
    Artista: 'Gabriel Diniz',
    id_Artista: 1642,
    Musica: 'O Nome Dela é Jennifer',
    id_Musica: 43158,
    Mes: 1,
    Dia: 30,
    Tipo_Emissora: 2,
    Categoria_Radio: 'FM' } ]

我需要为每个ID映射第一个数组,然后在第二个数组上找到它们,这是我的代码,它带来了-1

fonogramas.map( ef => {
    rank_completo.push(`{ ${rank.map( er => { er.Musica; }).indexOf(ef.id)}, ${ef.id}}`);
});

谢谢!

编辑1:

我期望的是:

rank_completo = [{id: 5, rank: 3},{id: 2, rank: 1},{id:1, rank:2},{id:4, rank: 4}]

编辑2:匹配示例

ef.id = 44337

我有一个包含两个元素的数组,在这两个元素之上的ef.id是第一个元素,因此我的结果应该是

rank_completo=[{id: 44337, rank: 0}]

2 个答案:

答案 0 :(得分:2)

您可以简单地将等级数组与id_Musica和fonogramas值的索引进行映射。

var fonogramas = [1, 2, 3, 44337, 5, 6, 7, 8, 9, 43158],
    rank = [ { Tocadas: 1424, Artista: 'Felipe Araújo', id_Artista: 1663, Musica: 'Atrasadinha - Feat. Ferrugem - Ao Vivo', id_Musica: 44337, Mes: 1, Dia: 30, Tipo_Emissora: 2, Categoria_Radio: 'FM' }, { Tocadas: 1356, Artista: 'Gabriel Diniz', id_Artista: 1642, Musica: 'O Nome Dela é Jennifer', id_Musica: 43158, Mes: 1, Dia: 30, Tipo_Emissora: 2, Categoria_Radio: 'FM' }],
    rank_completo = rank.map(({ id_Musica }) =>
        ({ id_Musica, rank: fonogramas.indexOf(id_Musica) }));

console.log(rank_completo);

答案 1 :(得分:0)

我想你想要这个:

rank_completo = rank
    .map( 
        (r, i) => ({
            rank: i,
            id: r.id_Musica
        })
    );