小编Sti*_*ijn的帖子

如何使用键值对象作为Angular Material表的数据源

我有一个如下所示的API响应:

{
  "2019-02-13": {
    "costs": 117,
    "commission": 271.07
  },
  "2019-02-14": {
    "costs": 123,
    "commission": 160.37
  },
  //etc..
}
Run Code Online (Sandbox Code Playgroud)

我想将此对象用作物料数据表的数据源,但出现此错误:

提供的数据源与数组,Observable或DataSource不匹配

我尝试使用像这样的单元格定义:

//cost
<td mat-cell *matCellDef="let item | keyvalue"> {{item.value.costs}} </td>
//date
<td mat-cell *matCellDef="let item | keyvalue"> {{item.key}} </td>
Run Code Online (Sandbox Code Playgroud)

但这没有用。

我当然可以遍历我的对象并制作一个像这样的数组:

[
  {
    commission: 100,
    costs: 45
    date: '2019-02-13'
  },
  {
    commission: 100,
    costs: 45
    date: '2019-02-13'
  }
]
Run Code Online (Sandbox Code Playgroud)

这可能会解决我的问题,但是我不想这样做,因为我觉得这是不必要的。

编辑

我通过将以下代码添加到我的服务呼叫中来修复它:

let data = [];
for (let key in response) {
  let value = response[key];
  let obj = {date: …
Run Code Online (Sandbox Code Playgroud)

javascript typescript angular-material angular angular-material-table

6
推荐指数
1
解决办法
579
查看次数

根据另一个单词数组排序一个单词数组

我有这样一个数组:

unorderedArr = ['pear', 'apple', 'banana', 'peach', 'pineapple'];
Run Code Online (Sandbox Code Playgroud)

我想基于另一个给定的数组来命令这个数组,如下所示:

order = ['peach', 'apple', 'pineapple']
Run Code Online (Sandbox Code Playgroud)

首选结果是:

orderedArr = ['peach', 'apple', 'pineapple', 'banana', 'pear'];
Run Code Online (Sandbox Code Playgroud)

在什么索引上放置不在order数组中的单词并不重要.不能保证order数组中的单词将在无序数组中

当前代码解决方案

我尝试使用这样的switch语句:

const orderedArr = []
unorderedArr.forEach(word => {
  switch (word) {
    case 'peach':
      orderedArr.push(word);
      break;

    case 'apple':
      orderedArr.push(word);
      break;

    case 'pineapple':
      orderedArr.push(word);
      break;

    default:
      orderedArr.push(word);
      break;
    }
});
Run Code Online (Sandbox Code Playgroud)

但我发现switch语句不会先检查第一个案例.

javascript typescript

5
推荐指数
1
解决办法
84
查看次数