Node.js 打印出阵列而不将其字符串化为松弛
我正在尝试返回我正在创建的数组。 问题是我不想使用stringify,因为它返回方括号。 我一直在尝试不同的方法,但没有真正起作用,我不确定它是否有问题,或者它是否存在于我的代码中=/ 这就是我所拥有的Node.js 打印出阵列而不将其字符串化为松弛,node.js,slack,Node.js,Slack,我正在尝试返回我正在创建的数组。 问题是我不想使用stringify,因为它返回方括号。 我一直在尝试不同的方法,但没有真正起作用,我不确定它是否有问题,或者它是否存在于我的代码中=/ 这就是我所拥有的 let elements = []; for (let i in response.options) { let opt = response.options[i]; elements.push( {
let elements = [];
for (let i in response.options) {
let opt = response.options[i];
elements.push(
{
"actions" : [
{
"name": opt.label,
"text": opt.label,
"type": "button",
"value": opt.value.input.text
}]
}
);
}
payload = {
"text": "Would you like to book?",
attachments: [
{
"text": "Choose",
"fallback": "You are unable to choose a game",
"callback_id": "wopr_game",
"color": "#3AA3E3",
"attachment_type": "default",
"actions": elements
}
]
};
console.log(payload)
我的控制台返回这个
{ text: 'Would you like to book?',
attachments:
[ { text: 'Choose',
fallback: 'You are unable to choose a game',
callback_id: 'wopr_game',
color: '#3AA3E3',
attachment_type: 'default',
actions: [Array] } ] }
而什么是严格化
{ text: 'Would you like to book?',
attachments:
[ { text: 'Choose',
fallback: 'You are unable to choose a game',
callback_id: 'wopr_game',
color: '#3AA3E3',
attachment_type: 'default',
actions: '{"actions":{"name":"Book transport","text":"Book transport","type":"button","value":"transport"}},{"actions":{"name":"Book hotel","text":"Book hotel","type":"button","value":"hotel"}},{"actions":{"name":"Travel Policy","text":"Travel Policy","type":"button","value":"Travel Policy"}}' } ] }
关于如何返回按钮显示得如此松弛的文本,有什么想法吗
提前谢谢
更新:
如果我向有效负载添加硬编码解决方案,松弛按钮将返回正确
payload = {
attachments: [
{
title: 'Do you want to interact with my buttons?',
callback_id: '123',
attachment_type: 'default',
actions: [
{
"name": "yes",
"text": "Yes",
"value": "yes",
"type": "button",
},
{
"name": "no",
"text": "No",
"value": "no",
"type": "button",
}
]
}
]
};
那么您想将有效负载的“elements”属性设置为数组中对象的“actions.text”属性中的值吗?听起来像是Array.map
:)的作业在有效负载上设置元素时,请尝试以下操作:
"elements": elements.map(el => el.actions.text)
谢谢,不幸的是,这还返回元素:[Array]}]}EDIT Nevermind,我刚刚看到node.js标记。如果在打印对象之前将其JSON.stringify()转换为JSON,那么控制台中会有什么结果?不用担心。在stringify中,我得到这个返回元素:{“actions”:{“name”:“Book transport”,“text”:“Book transport”,“type”:“button”,“value”:“transport”},{“actions”:{“name”:“Book hotel”,“text”:“Book hotel”,“type”:“button”,“value”:“hotel”},{“actions”:{“name”:“Travel Policy”,“text”:“Travel Policy”,“type”:“button”,“value”:“Travel Policy”}“}]}所以stringify会返回正确的值,除了满括号:)你能在硬编码元素时发布你正在使用的内容吗?控制台再次缩写了你的值,但没有告诉你实际值是什么。在将对象打印到控制台之前,请始终使用
JSON.stringify
,以便查看整个真实值。(这在浏览器上不是一个考虑因素,因为大多数浏览器都会为您格式化所有内容,但节点运行在终端中,这并不能很好地格式化它。)