- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我如何转换一些json数组
[
{
"travelExpenseId":11,
"tripId":2,
"paymentPurpose":"some payment purpose 2",
"receiptNumber":"EF12312_2",
"receiptDate":"2018-09-30T00:00:00",
"receiptPrice":107000.0,
"receiptCurrency":"руб."
},
{
"travelExpenseId":10,
"tripId":2,
"paymentPurpose":"some payment purpose 1",
"receiptNumber":"EF12312_1",
"receiptDate":"2018-09-30T00:00:00",
"receiptPrice":107000.0,
"receiptCurrency":"руб."
}
]
适合通过travelExpenseId快速获取费用和通过tripId获取费用的东西。
现在我使用这样的东西:
export const expenseSchema = new schema.Entity('expenses', {}, { idAttribute: 'travelExpenseId' });
export const expensesListSchema = [expenseSchema];
并得到结果:
data: {
entities: {
expenses: {
'10': {
travelExpenseId: 10,
tripId: 2,
paymentPurpose: 'some payment purpose 1',
receiptNumber: 'EF12312_1',
receiptDate: '2018-09-30T00:00:00',
receiptPrice: 107000,
receiptCurrency: 'руб.'
},
'11': {
travelExpenseId: 11,
tripId: 2,
paymentPurpose: 'some payment purpose 2',
receiptNumber: 'EF12312_2',
receiptDate: '2018-09-30T00:00:00',
receiptPrice: 107000,
receiptCurrency: 'руб.'
}
}
},
result: [
11,
10
]
}
我想向 data.entities 添加额外的模式 expensesByTripId
,所以结果应该类似于这样:
data: {
entities: {
expensesByTripId: {
'2': [10, 11],
},
expenses: {
'10': {
travelExpenseId: 10,
tripId: 2,
paymentPurpose: 'some payment purpose 1',
receiptNumber: 'EF12312_1',
receiptDate: '2018-09-30T00:00:00',
receiptPrice: 107000,
receiptCurrency: 'руб.'
},
'11': {
travelExpenseId: 11,
tripId: 2,
paymentPurpose: 'some payment purpose 2',
receiptNumber: 'EF12312_2',
receiptDate: '2018-09-30T00:00:00',
receiptPrice: 107000,
receiptCurrency: 'руб.'
}
}
},
result: [
11,
10
]
}
或者请给我提供适合我情况的任何其他方式
最佳答案
let data = {
entities: {
expenses: {
'10': {
travelExpenseId: 10,
tripId: 2,
paymentPurpose: 'some payment purpose 1',
receiptNumber: 'EF12312_1',
receiptDate: '2018-09-30T00:00:00',
receiptPrice: 107000,
receiptCurrency: 'руб.'
},
'11': {
travelExpenseId: 11,
tripId: 2,
paymentPurpose: 'some payment purpose 2',
receiptNumber: 'EF12312_2',
receiptDate: '2018-09-30T00:00:00',
receiptPrice: 107000,
receiptCurrency: 'руб.'
}
}
},
result: [
11,
10
]
}
let object = {};
Object.values(data.entities.expenses).forEach(expenses => {
let result = object[expenses.tripId] || [];
object[expenses.tripId] = [...result, expenses.travelExpenseId];
});
data.entities["expensesByTripId"] = object;
console.log(data);
我不确定 Normalizr
是如何工作的,但我正在使用 VanillaJS 根据您的要求定制一个
关于javascript - Normalizr 转换模式的麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50529558/
我正在规范化一个一级嵌套批处理列表。第一级地段称为主人,嵌套的是奴隶。 // my schema const lot = new schema.Entity('lots'); const lots =
我有一个 API,它使用 fields 属性中的属性提供这样的数据。 { records: [ { id: "123", fields: { author: {
我有一个像这样的嵌套对象数组: var matchs = [ { id: 10689, sport: 'Tennis', players: [
我使用 normalzr 来标准化 Redux 存储中的数据。但是,我不知道如何在标准化数据上创建标准化索引。以下是我在不使用 Normalizr 的情况下解决该问题的方法: var postData
我如何转换一些json数组 [ { "travelExpenseId":11, "tripId":2, "paymentPurpose":"some paym
import { normalize, Schema, arrayOf } from 'normalizr'; var ListA = [ { id:1, te
我正在对从 Api 接收的数据使用 normalizr。当我收到列表时,我会按预期获得规范化实体。 但是当我发送更新一个实体的请求时,我只收到一个包裹在数据信封中的实体,它没有被 normalizr
我需要重组来自服务器 API 的数据以在我的客户端应用程序中使用,我开始了解 normalizr .如果可能,我正在尝试使用这个库。 数据结构如下。 { "history": [{
我需要规范化这些数据,以便我同时拥有一组列表和另一个待办事项。 const data = [ { _id: '1', title: 'List1', todos: [
对于多态模式,例如 Union在 Normalizr 中,对于模式定义和数据: const data = { owner: { id: 1, type: 'user', name: 'Anne' }
如果您有一个规范化的 redux 存储并为实体使用 id,但还有其他额外的唯一标识符并且也需要使用它们,您会怎么做。 例子 { entities: { users: {
我正在构建一个音乐播放器应用程序,并使用 REST API 从各个端点获取轨道(播放列表、特定用户发布的轨道等) 我正在使用 redux 和 normalizr 来管理我的状态。我创建了一个 trac
我知道我的问题的表述很奇怪,但我不知道如何正确表达。我想使用 Redux 的 normalizr 规范化我的数据。让我用代码陈述我的问题。 我有一个如下所示的 api 响应: [ { "n
comments : { byId : { "comment1" : { id : "comment1", author : "
我刚刚开始在 Redux 中使用 normalizr,我被困在我看来像一个简单的问题上,但我可能做错了。所以我想对这样的数组进行规范化: { articles: [ {id: 1, som
考虑传回的 User 对象: { "id": "123", "username": "TestUser", "group": { "id": "324",
我想用 normalizr 规范化我的数据.问题是我的数据中有一个键 (teams),它与其他数据没有关系。 例如: const data = { programs: [{ id:
我想规范化这种格式的数据: [ { id: 3, status: "active", created: "2017-07-03T15
我必须规范化来自服务器的两个响应,并使用 normalizr 将它们存储在我的商店中。第一个回复给了我章节,第二个回复给了我帖子。 版 block 有很多帖子。 一个帖子只能有一个部分。 第一 rea
在使用 Normalizr 后我有一个这样的数组: comments : { byId : { "comment1" : { i
我是一名优秀的程序员,十分优秀!