Подскажите, пожалуйста, как в TypeScript
obj
преобразовать в newObj
?
interface Range {
date: string;
size: number;
temp: [{
name: string | null;
text: string | null
} | []];
}
let obj: Range[] = [{
"date": "2020-01-20",
"size": 8,
"temp": [{
"name": "aaa",
"text": "AAA",
},
{
"name": "bbb",
"text": "BBB",
},
{
"name": "ccc",
"text": "CCC",
}
]
},
{
"date": "2020-01-21",
"size": 7,
"temp": []
}
];
let newObj = [{
"date": "2020-01-20",
"size": 8,
"prop": true,
"name": "aaa",
"text": "AAA"
},
{
"date": "2020-01-20",
"size": 8,
"prop": true,
"name": "bbb",
"text": "BBB"
},
{
"date": "2020-01-20",
"size": 8,
"prop": true,
"name": "ccc",
"text": "CCC"
},
{
"date": "2020-01-21",
"size": 7,
"prop": false,
"name": null,
"text": null
}
];
там песочница
interface $range {
date: string;
size: number;
temp: $temp;
}
type $rangeList = $range[];
interface $tempObj {
name: string | null;
text: string | null;
}
type $temp = $tempObj[];
// --> так
interface $rangeB {
date: string;
size: number;
prop: boolean;
name: $tempObj['name'];
text: $tempObj['text'];
}
// или
// type $rangeB = Omit<$range, 'temp'> & $tempObj & { prop: boolean };
type $rangeBList = $rangeB[];
type $range2rangeBList = (range: $range) => $rangeBList
const range2rangeBList: $range2rangeBList = range =>
Array.from(range.temp, ({ name, text }) => ({
name, text,
date: range.date,
size: range.size,
prop: false,
} as $rangeB))
const matrix2arr = (matrix: any[][]): any[] =>
matrix.reduce((arr, q, i) => (arr.push(...matrix[i]),arr), [])
type $rangeList2rangeBList = (list: $rangeList) => $rangeBList
const rangeList2rangeBList: $rangeList2rangeBList = list =>
matrix2arr(
list.map(range2rangeBList)
)
let range: $rangeList = [
{
date: "2020-01-20",
size: 8,
temp: [{
"name": "aaa",
"text": "AAA",
},
{
"name": "bbb",
"text": "BBB",
},
{
"name": "ccc",
"text": "CCC",
}
]
},
{
date: "2020-01-21",
size: 7,
temp: []
}
];
const newObj = rangeList2rangeBList(range)
console.log(newObj)
"use strict";
const range2rangeBList = range => Array.from(range.temp, ({ name, text }) => ({
name, text,
date: range.date,
size: range.size,
prop: false,
}));
const matrix2arr = (matrix) => matrix.reduce((arr, q, i) => (arr.push(...matrix[i]), arr), []);
const rangeList2rangeBList = list => matrix2arr(list.map(range2rangeBList));
let range = [
{
date: "2020-01-20",
size: 8,
temp: [{
"name": "aaa",
"text": "AAA",
},
{
"name": "bbb",
"text": "BBB",
},
{
"name": "ccc",
"text": "CCC",
}
]
},
{
date: "2020-01-21",
size: 7,
temp: []
}
];
const newObj = rangeList2rangeBList(range);
console.log(newObj);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Вытаскиваю данные с биржи, сначала торговую пару, а потом к ней несколько данных по таймфреймамТо есть
У меня проблема Я создаю онлайн-тестЯ проверяю, что интернет был отключен с помощью плагина jquery checknet
Используя api стороннего сервиса я отправляю информацию наших заказовНа этом сервисе у заказов 3 статуса: новые, активные и завершенные
Мне нужно по клику на кнопку перекрасить соседний див в синий цветКомпонент кнопка, и компонент див находятся на одном уровне