Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 打印出阵列而不将其字符串化为松弛_Node.js_Slack - Fatal编程技术网

Node.js 打印出阵列而不将其字符串化为松弛

Node.js 打印出阵列而不将其字符串化为松弛,node.js,slack,Node.js,Slack,我正在尝试返回我正在创建的数组。 问题是我不想使用stringify,因为它返回方括号。 我一直在尝试不同的方法,但没有真正起作用,我不确定它是否有问题,或者它是否存在于我的代码中=/ 这就是我所拥有的 let elements = []; for (let i in response.options) { let opt = response.options[i]; elements.push( {

我正在尝试返回我正在创建的数组。 问题是我不想使用stringify,因为它返回方括号。 我一直在尝试不同的方法,但没有真正起作用,我不确定它是否有问题,或者它是否存在于我的代码中=/

这就是我所拥有的

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
,以便查看整个真实值。(这在浏览器上不是一个考虑因素,因为大多数浏览器都会为您格式化所有内容,但节点运行在终端中,这并不能很好地格式化它。)