В настоящее время я заполняю таблицу HTML данными JSON, полученными с моего сервера.

JSON выглядит так:

[
   {
      "field1":"someString",
      "value":6e-21
   },
   {
      "field1":"someOtherString",
      "value":1e-4
   }
]

Но в таблице HTML поле «значение» иногда преобразуется в десятичную запись, если число вписывается в div

Вот скрипка, демонстрирующая проблему

Я хотел бы иметь все значения в научной нотации в таблице HTML (как в моих данных JSON)

2
felix 9 Янв 2017 в 09:54

3 ответа

Лучший ответ

Используйте функцию toExponential() следующим образом:

data[result].value.toExponential()

Из MDN:

Метод toExponential() возвращает строку, представляющую Number объект в экспоненциальной записи.

Вот полный фрагмент:

var data = [{
  "field1": "someString",
  "value": 6e-21
}, {
  "field1": "someOtherString",
  "value": 1e-4
}];

var htmlContent = "<tbody>";

for (let result in data) {
  htmlContent += "<tr><td>" + data[result].field1 + "</td><td>" + data[result].value.toExponential() + "</td></tr>";
}

document.getElementById('table').innerHTML += htmlContent + "</tbody>";
table,
th,
td {
  border: 1px solid black;
}
<p>generated from JSON:  </p>
<table id="table">
  <thead>
    <tr>
      <td>field1</td>
      <td>value</td>
    </tr>
  </thead>
</table>
<p>expected:</p>
<table>
  <thead>
    <tr>
      <td>field1</td>
      <td>value</td>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>someString</td>
      <td>6e-21</td>
    </tr>
    <tr>
      <td>someOtherString</td>
      <td>1e-4</td>
    </tr>
  </tbody>
</table>
1
Robby Cornelissen 9 Янв 2017 в 07:08

Преобразовать все значения в строку

var data = [{
  "field1": "someString",
    "value": "6e-21"
}, {
   "field1": "someOtherString",
    "value": "1e-4"

} ] ;

Рабочая скрипка: - https://jsfiddle.net/e27w2poa/4/

2
Kenny 9 Янв 2017 в 06:58

Вы можете использовать toExponential() для преобразования обратно в экспоненциальную форму. Работающий JSFiddle https://jsfiddle.net/e27w2poa/5/

0
Ashokkumar 9 Янв 2017 в 07:04