Как читать свойства данных события

#javascript #websocket

#javascript #websocket

Вопрос:

Ниже приведен код JavaScript для чтения свойств события:

 function webSockStart() { // onclick() of a button
  document.getElementById("button").disabled = true;

  var ws = new WebSocket("ws://127.0.0.1:3000/websock");

  ws.onmessage = function (evt) {
    console.log(evt.data)
    console.log(evt.data["Key"]) // undefined
    console.log(evt.data["Val"]) // undefined

  };

}
  

console.log(evt.data) выдает строку "{"Key":"ab","Val":"cd"}" (полученную через websocket)

var map = new Map(JSON.parse(evt.data)) выдает ошибку: Uncaught TypeError: object is not iterable(cannot read property Symbol(Symbol.Iterator))

Как преобразовать эту строку в объект карты и прочитать свойства? console.log(evt.data["Key"])

Ответ №1:

Сначала вам нужно проанализировать его, а затем получить доступ

 let str = `{"data" : {"Key":"ab","Val":"cd"}}`

let obj = JSON.parse(str)

console.log(obj.data['Key'])  

Комментарии:

1.@overexchange Map ожидает, что повторяющиеся объекты object не являются одним из них. я не уверен, почему вы хотите изменить объект на карту?

2. Но я не могу сравнить содержимое ячеек таблицы с этими проанализированными json rows[i].cells[0].textContent == obj.data['Key'] . Потому что console.log(obj.data['Key']) выводит ab , но не "ab"

3. @overexchange что такое rows[i].cells[0].textContent ?

4. var rows = myTable.getElementsByTagName("tr") и console.log(rows[1].cells[0].textContent) дает ab и console.log(rows[1].cells[1].textContent) дает cd

5. @overexchange вы можете вести журнал консоли и проверять значения. или создайте рабочий пример, чем будет легче решить точную проблему