我有一个函数可以接收类似于以下对象的对象
Object(12)
0: "UQ"
1: "YTL"
2: "VZW"
3: "LGT"
4: "KDDI"
5: "KT"
6: "SPRINT_T"
7: "RIL"
8: "SKT"
9: "SPRINT"
10: "KPS"
11: "GLB1"
并将其分配给变量名是结果:字符串[];
现在我使用forEach遍历整个数组,但是我不能。然后,我打印显示0的对象的长度。
但是我可以使用results [0]或results [1]访问名称。但是我不能使用循环。
现在,我该如何遍历整个对象并访问所有名称,例如'UK','YTL'。
答案 0 :(得分:1)
使用Object.keys()。由于这不是数组而是对象,因此不能使用forEach。
.findall()
答案 1 :(得分:0)
在Typescript中,您可以通过两种方式分配json数据。
假设您将json数据存储在变量名称data中。然后,您可以按原样分配它。
data: string[];
this.service.getData()
.subscribe(
(data: string[]) => {
this.data = data;
});
通过这种方式,您可以使用Foreach或对该问题的期望。
通过这种方式,您可以将json数据分配为问题中显示的对象。
data: string[];
this.service.getData()
.subscribe(
(data: string[]) => {
this.data = {... data };
});
在遇到问题时,您必须使用第一个。
答案 2 :(得分:0)
我用TypeScript
创建了一个示例来遍历对象并获取所有终端节点,希望对您有所帮助:
function getCurrentLevelTerminalNodes(obj: any, maxDepth = 100) {
if (maxDepth <= 0) {
throw new Error('Too deep to traverse!');
}
const res: any[] = [];
Object.keys(obj).forEach(value => {
if (typeof obj[value] !== 'object') {
res.push(obj[value]);
} else {
res.push(...getCurrentLevelTerminalNodes(obj[value], maxDepth - 1));
}
});
return res;
}
export default function getTerminalNodes(obj: Object) {
return getCurrentLevelTerminalNodes(obj);
}
import getTerminalNodes from './terminal-node';
describe('terminal-node', () => {
it('get all terminal nodes', () => {
const testObj = {
a: {
b: {
c: 'c',
},
},
b: 'b',
};
expect(getTerminalNodes(testObj)).toStrictEqual(['c', 'b']);
});
});