Typescript: как установить значение в пустую строку - PullRequest
0 голосов
/ 19 января 2020

Я делаю сортировку и группировку данных по первому слову, которое разделяется на _ (подчеркивание). Таким образом, результат должен возвращать 3 группы (например: orders, items and ""). Как я могу установить какое-то значение (например, другие) для этой пустой строки. Здесь stackblitz

let rawData = [
  { name : 'orders_list', id : 10},
  { name : 'orders_price', id : 7},
  { name : 'items_list', id : 12 },
  { name : 'items_price', id : 7},
  { name : 'others-list', id : 7},
  { name : 'secondOthers-list', id : 7},
]

let data = rawData.reduce((r, e) => {

  let group = e.name.substr(0, e.name.indexOf('_'));

  if(!r[group]) {
    r[group] = {group, children: [e]}
  } else {
    r[group].children.push(e);
  }

  return r;
}, {})

let result = Object.values(data)

console.log(result)

Ответы [ 2 ]

1 голос
/ 19 января 2020

вот рабочий стек, который я сделал:)

// Import stylesheets
import './style.css';

// Write TypeScript code!
const appDiv: HTMLElement = document.getElementById('app');
appDiv.innerHTML = `<h1>TypeScript Starter</h1>`;

let rawData = [
  { name : 'orders_list', id : 10},
  { name : 'orders_price', id : 7},
  { name : 'items_list', id : 12 },
  { name : 'items_price', id : 7},
  { name : 'others-list', id : 7},
  { name : 'secondOthers-list', id : 7},
]


let data = rawData.reduce((r, e) => {

  let group = e.name.substr(0, e.name.indexOf('_'));

  if(!r[group]) {
    r[group] = {group, children: [e]}
  } else {
    r[group].children.push(e);
  }

  return r;
}, {})

// since data at this point is an object, to get array of values
// we use Object.values method
let result = Object.values(data)
var resultMap = result.map(_val => {
  return _val.group
})
var index = resultMap.indexOf('')
result[index].group = 'Others'

console.log(result)

https://stackblitz.com/edit/typescript-6xfk3j

0 голосов
/ 19 января 2020

Проверьте это.

// Import stylesheets
import './style.css';

// Write TypeScript code!
const appDiv: HTMLElement = document.getElementById('app');
appDiv.innerHTML = `<h1>TypeScript Starter</h1>`;

let rawData = [
  { name : 'orders_list', id : 10},
  { name : 'orders_price', id : 7},
  { name : 'items_list', id : 12 },
  { name : 'items_price', id : 7},
  { name : 'others-list', id : 7},
  { name : 'secondOthers-list', id : 7},
]


let data = rawData.reduce((r, e) => {

  let group = e.name.substr(0, e.name.indexOf('_'));

  if(!r[group]) {
    r[group] = {group, children: [e]}
  } else {
    r[group].children.push(e);
  }

  return r;
}, {})

// since data at this point is an object, to get array of values
// we use Object.values method
let result = Object.values(data)
result.filter(f=>{
  if(f.group==''){
    f.group='Others'
  }
});

console.log(result)

StackBlitz: https://stackblitz.com/edit/typescript-pe8k9p

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...