问题描述:
我正在尝试遍历两个 API 响应。然后我想将这两个结果组合成一个数组,然后循环遍历它得到TransactionType
,这就是我想要的值。我是循环播放的菜鸟,它正在显示。API 结果如下所示:
到目前为止,我只是尝试循环遍历我的代码,
private async sortTransactiontypes() {
const customTypes = await API(this.params1);
const defaultTypes = await API(this.params2);
const customKey = Object.values(customTypes);
const defaultKey = Object.values(defaultTypes);
for (const key in customKey) {
console.log(JSON.stringify(`${key}: ${customKey[key]}`));
}
}
但我不断收到“0:[object Object],[object Object],[object Object]”错误。
解决思路一:
这不是错误,它只是将数组转换为字符串后得到的输出。为了说明我在我的 Node.js CLI 中尝试了以下内容:
> let arr = [{one: 'one'}, {two: 'two'}]
undefined
> console.log(arr)
[ { one: 'one' }, { two: 'two' } ]
undefined
> console.log(`${arr}`)
[object Object],[object Object]
正如您所看到的,记录数组会产生您想要的输出,但是当您使用模板字符串将对象数组包围起来时,数组中的每个对象都会被转换为通用表示[object Object]
。
常规的旧 console.log 在输出完整的对象数组方面要好一些,但如果你将对象嵌套得太深,你会得到类似的效果:
> arr = [{obj: {nested: {another: 'obj'}}}, {nested: false}]
[ { obj: { nested: [Object] } }, { nested: false } ]
> console.log(arr)
[ { obj: { nested: [Object] } }, { nested: false } ]
undefined
尝试删除反引号,或者在 JSON 中获取整个对象的完整表示,请执行以下操作:
for (const key in customKey) {
console.log(JSON.stringify({key: customKey[key]}));
}
从那里查看您的终端输出,我无法 100% 判断,但在我看来,您想从customTypes
变量中获取对象并将这些对象组合成一个更长的列表?像这样的东西应该可以解决问题:
const arr = [];
for (const key in customTypes) {
arr.push(customTypes[key], ...defaultTypes[key]);
}
// now you have an array of objects so ...
const transactions = arr.map(o => o.TransactionType);
解决思路二(这是解决小编问题的思路):
以上仅为部分解决思路,添加下方公众号后回复001,即可查看全部内容。公众号有许多评分最高的编程书籍和其它实用工具,无套路,可放心使用
如果您觉得有帮助,可以关注公众号——立志于成为对程序员有益的公众号