javascript - 将数据数组转换为字符串
问题描述
我有以下格式的数据:
[
{
"id": 1,
"cost": 323,
"comparison": "High",
"flag": "Alert"
}
...
]
我正在尝试为Google 图表准备这些数据,更具体地说是制作直方图。所需的格式类似于下一个示例:
var data = google.visualization.arrayToDataTable([
['Name', 'Number'],
['Name 1', number1],
['Name 2', number2],
['Name 3', number3],
...
]);
因此,从我的输入数据中,我想使用id
andcost
属性。为了解决这个问题,我实现了下一个代码:
const keys = Object.keys(this.data[0]).filter(e => !(["comparison","flag"].includes(e)));
const values = this.data.map(e => Object.entries(e).filter(([k]) => keys.includes(k)).map(([, v]) => v));
const formattedArray = [keys, ...values];
这在某种程度上给了我所需的数据,我看到的是这样的:
var data = google.visualization.arrayToDataTable([
['id', 'cost'],
[1, 323]
...
]);
但是我的图表显示不正确,我认为我面临的问题是我id's
作为.int
string
如何将所有放入第一列的值转换为字符串?
谢谢!
解决方案
可以使用Number.isInteger()
判断变量是否为数字,然后使用toString()
方法进行转换。您可以使用index
地图中的参数仅对第一列进行字符串化。您可以像这样更改代码:
const data = [{ "id": 1, "cost": 323, "comparison": "High", "flag": "Alert"}]
const keys = Object.keys(data[0]).filter(e => !(["comparison","flag"].includes(e)));
const values = data.map(e => Object.entries(e).filter(([k]) => keys.includes(k)).map(([, v], i ) => {
if ( i === 0 && Number.isInteger( v ) ) {
return v.toString();
}
return v;
}));
const formattedArray = [keys, ...values];
console.log( formattedArray );
推荐阅读
- php - 使用 PHP 回显完整 json 的编码段
- java - 一次处理两个相邻元素的集合(使用流)
- python - 如何使用管道在子进程之间正确传递信息?
- ios - Firebase 未在 Swift / iOS 中显示 microsoft.com 的登录页面
- azure-devops - 在 Azure DevOps 中自动化多个构建/发布
- optaplanner - 如何在 VehicleRouting 示例中实现 Constraint Match Total
- vb.net - 找不到打开文件的人
- node.js - 从heroku上部署的服务器读取文件
- windows - 如何在 Windows 中按 ctrl-c 消除无关的控制台输出?
- java - queryDsl 查询中的类路径是否有限制?