Typescript:如何将值设置为空字符串

问题描述 投票:0回答:2

我正在根据以_(下划线)分割的第一个单词对数据进行排序和分组。因此结果应返回3组(例如:orders, items and "")。我如何为该空字符串设置一些值(例如:Others)。这是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)
angular typescript ecmascript-6 reduce setvalue
2个回答
0
投票

这是我进行的工作中的闪电战:)

// 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
投票

检查此。

// 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

© www.soinside.com 2019 - 2024. All rights reserved.