Javascript Array превращается в строку при передаче в функцию - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть код в скриптах приложений Google. Я создал веб-приложение, подключенное к электронной таблице. В html у меня есть эта кнопка

<input id="save" type="button" value="Save" class="btn btn-primary btn-lg" onclick="updateButton(data);"

Что пользователь может щелкнуть. Когда они щелкают по нему, получается функция updateButton. data - это двумерный массив, определенный ранее в коде js, и я знаю, что он может вызываться элементами и имеет тип объекта. Тем не менее, когда я пытаюсь использовать его внутри кнопки обновления, его тип - строка, и он выглядит как строка, разделенная запятыми. Поскольку массив двумерный, я не могу просто использовать split, поскольку это делает его одним длинным массивом вместо двумерного.

Например, если исходные данные

[["1", "2", "3", "4", "5"], ["9", "8", "7", "6"]]

Это заканчивается как

"1, 2, 3, 4, 5, 9, 8, 7, 6"

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Оказывается, я нашел проблему. Мой массив данных взят из скриптов приложений Google, и я пытаюсь записать его в JavaScript. У меня есть эта строка как часть моего шаблонного HTML.

  <script>
      var data = <?= data ?>;
  </script>

Поскольку шаблон оценивает данные, он, похоже, передает строковую версию данных (внутри шаблона) данным внутри javascript. Поэтому мне придется найти другой способ передать эту переменную данных в javascript.

0 голосов
/ 09 ноября 2018

Если вы хотите преобразовать двумерный массив в одномерный массив, вы можете использовать метод массива flat, но это не поддерживает все браузеры.

Еще один способ, который вам нужно использовать для цикла

let currentArray = [["1", "2", "3", "4", "5"], ["9", "8", "7", "6"]]
let newArray = []
currentArray.forEach(rowItem=>{
    rowItem.forEach(columnItem=>{
        newArray.push(columnItem)
    })
})

Я надеюсь, что ответ на этот вопрос вам нужен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...