【发布时间】:2018-06-24 04:38:07
【问题描述】:
JSON 对象的结构如下:
{
"headings": [
"A",
"B",
"C"
],
"results": [
{
"id": 1,
"name": "Unknown",
"number1": 12000,
"number2": 20000
},
{
"id": 2,
"name": "Unknown2",
"number1": 12000,
"number2": 20000
}
]
}
我获取数据的 AJAX 如下所示:
var myChart= [];
/*Knockout.js*/
var viewModel = {
myChartData: ko.observable()
};
$.ajax({
method: "GET",
url: myAPI,
dataType: 'json',
success: function (data) {
myChart[0] = data.results;
viewModel.myChartData(myChart[0]);
}
});
一些背景信息数据进入空白数组的原因是因为我有一个表格,旁边有一个按钮,可以让您在数据之间交换。所以还有另一个 AJAX,它与这个几乎相同,但正在插入 myChart[1]。
现在我正在使用 KnockoutJS 来遍历 HTML 中的数据,例如:
<tbody id="topretailers" data-bind="foreach: leftChartData">
<tr>
<td data-bind="text: name"></td>
<td data-bind="text: number1"></td>
<td data-bind="text: number2"></td>
</tr>
</tbody>
我想为数字添加分隔符,例如 (12,000)。但是,理想情况下,我希望在它进入可观察到的淘汰赛之前执行此操作,这样我仍然可以使用 foreach。
我已经准备好使用正则表达式.replace(/\B(?=(\d{3})+(?!\d))/g, ","),但我不知道最好的方法。
有没有办法替换整个结果对象中的所有数字 1 和数字 2?无需创建新对象?
所以最终表格将如下所示:
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}
<table>
<tr>
<th>Name</th>
<th>Number 1</th>
<th>Number 2</th>
</tr>
<tr>
<td>Unknown</td>
<td>12,000</td>
<td>20,000</td>
</tr>
<tr>
<td>Unknown2</td>
<td>12,000</td>
<td>20,000</td>
</tr>
</table>
【问题讨论】:
标签: javascript jquery json knockout.js