javascript - 规范化对象数组

标签 javascript normalizr

我第一次使用 normalizr 库,不知道它的存在 我有一个如下所示的 JSON 响应:

{
  "Action": [
    {
      "id": "cbbe648e-123c-4a2c-a1a2-22d5f51151b0",
      "title": "Cold Pursuit",
      "poster_url": "https://image.tmdb.org/t/p/original/otK0H9H1w3JVGJjad5Kzx3Z9kt2.jpg"
    },
    ...
    {
      "id": "0efa59d8-6700-4f91-82bf-a38682f1f1b4",
      "title": "Hellboy",
      "poster_url": "https://image.tmdb.org/t/p/original/bk8LyaMqUtaQ9hUShuvFznQYQKR.jpg"
    }
  ],
  "Adventure": [
    {
      "id": "da8508a5-3b03-49f9-9e75-31ded0d4f68c",
      "title": "Dumbo",
      "poster_url": "https://image.tmdb.org/t/p/original/279PwJAcelI4VuBtdzrZASqDPQr.jpg"
    ...
    {
      "id": "f4b14d2e-339f-40b2-b416-9c88297941ad",
      "title": "Avengers: Endgame",
      "poster_url": "https://image.tmdb.org/t/p/original/or06FN3Dka5tukK1e9sl16pB3iy.jpg"
    },
  ]
}

我本质上想使用 normalizr 来获取所有电影的数组(每个流派中的对象) 我将此作为我的架构,并且两个选择器正在工作:

import { schema } from 'normalizr';

export const movie = new schema.Entity('movies');
export const genre = { movies: [movie] };
export const feed = { moviesByGenre: [genre], upcoming: [movie] };
export const selectMovieId = { movieId: // [ genre: [movies] ] } ?

最佳答案

不知道如何在 normalizr 中执行此操作,但在普通的旧 Javascript 中,您可以执行以下操作:

// Get a list of just the movies
var moviesList = [].concat.apply([], Object.values(movie));

// Get an object mapping movie keys to movie objects
var moviesById = moviesList.reduce(function(result, movie) {
  result[movie['id']] = movie;
  return result;
}, {});

如果这符合您的要求,请告诉我,我可以更深入地解释每一行。

关于javascript - 规范化对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56158289/

相关文章:

javascript - 使用混合 iframe-proxy/xsl/jsonp 概念使用 Javascript 加载跨域 XML?

javascript - 在 mxgraph 中设置连接器(边缘)点

javascript - Normalizr 不处理信封中的数据

javascript - 在 Normalizr 模式中设置深度关联

javascript - 主干 View 属性 : one on instance, 是原型(prototype)上的一个吗?

javascript - 使用 react componentDidMount 在变量中未定义

javascript - 如何在 karma/mocha 测试套件中模拟窗口对象属性?

规范化数据的 TypeScript 类型或接口(interface)

redux - 如何将更新合并到标准化的Redux状态

javascript - Normalizr 转换模式的麻烦