为什么当我将隐藏输入的值设置为对象数组的值时,它会使隐藏输入数组中的每个项目都变成 [object Object]

Why when I set the value of an hidden input to a value of an array of objects it makes every item in the hidden input array into [object Object]

我有这个代码:

for(let i =0; i < upbtn.length; i++){
  upbtn[i].addEventListener('click', function(){
    let whichTopic = i
    if(whichTopic == 0){
      return true
    }
    else{
      let arr = coursenewtopics.value
      arr = JSON.parse(arr)
      arraymove(arr, i, i-1)
      coursenewtopics.value = arr
      console.log(arr)
      console.log(coursenewtopics.value)
      //changeordertopicsform.submit()
    }
  })
}

我正在尝试从隐藏输入中对数组进行排序,然后将隐藏输入的值设置为排序数组,我控制台记录了排序数组的结果(arr)

[
    {
        "type": "text",
        "name": "",
        "text": ""
    },
    {
        "type": "text",
        "name": "2",
        "text": ""
    },
    {
        "type": "text",
        "name": "1",
        "text": ""
    },
    {
        "type": "text",
        "name": "3",
        "text": ""
    },
    {
        "type": "text",
        "name": "4",
        "text": ""
    }
]

结果是我想要的,但是当我输入这个值后我只是将 arr 记录到隐藏输入,然后控制台记录隐藏输入的值变为:

[object Object],[object Object],[object Object],[object Object],[object Object]

为什么JavaScript会这样?我该如何解决这个问题并将值放入隐藏输入而不使它们成为 [object Object]?稍后我需要它们作为表格。

谢谢!

所以你的问题是'How to display an array of object literally'。

你可以试试JSON.stringify(arr, null, ' ')