【发布时间】:2021-12-03 22:42:53
【问题描述】:
我有一个Observable keyValue(): Observable<{[id: number]: string;}>;
Observable 的参数是:
{
[id: number]: string;
}
如你所见,第二个参数没有名字
现在我之前的 Observable 的一个结果是:
{1: 'Bad', 2: 'Good', 3: 'Worst', 4: 'Best', 5: 'Mean'}
我需要翻译成一个数组:
interface NumberKeyValue {
id: number;
value: string;
}
我正在尝试:
.keyValue()
.pipe(
map((kv) => {
console.log(kv);
const jsonObject = JSON.parse(JSON.stringify(kv));
console.log(jsonObject);
const nkvArray: NumberKeyValue[] = [];
for (const item of jsonObject) {
console.log(item);
const nkv: NumberKeyValue = {
id: 8, //How to catch the id number?
value: 'empty', //How to catch the string?
};
nkvArray.push(nkv);
}
return nkvArray;
})
)
.subscribe((response) => {
console.log(response);
});
在之前的代码之后我得到了:
TypeError: jsonObject is not iterable
at MapSubscriber.project (template-sms.facade.ts:295)
at MapSubscriber._next (map.js:29)
at MapSubscriber.next (Subscriber.js:49)
at TapSubscriber._next (tap.js:46)
at TapSubscriber.next (Subscriber.js:49)
at SwitchMapSubscriber.notifyNext (switchMap.js:70)
at InnerSubscriber._next (InnerSubscriber.js:11)
at InnerSubscriber.next (Subscriber.js:49)
at MapSubscriber._next (map.js:35)
at MapSubscriber.next (Subscriber.js:49)
第一个也是主要的问题:如何将我的NumberKeyValue 接口转换为一个数组?
其次:这种类型表示有名称{[id: number]: string;}吗?
【问题讨论】:
标签: arrays json angular observable mapping