Javascript:在保持一个键值的同时,用来压平嵌套的JSON数组
Javascript: flatten nested JSON array with while keeping a key value
我有以下JSON数组:
[{
"eurusd": {
"at": 1410438338,
"ticker": {
"buy": "1.123",
"sell": "1.123",
"low": "1.123",
"high": "1.123",
"last": "1.123",
"vol": "1.123",
"change": "1.123",
"change_trend": "up"
}
},
"eurgbp": {
"at": 1410438338,
"ticker": {
"buy": "1.123",
"sell": "1.123",
"low": "1.123",
"high": "1.123",
"last": "1.123",
"vol": "1.123",
"change": "1.123",
"change_trend": "down"
}
}
}]
并且需要将其以以下格式呈现:
[{
"market": "eurusd",
"currency": "usd",
"volume": "1.123",
"change": "1.123",
"last": "1.123",
"high": "1.123",
"low": "1.123"
}, {
"market": "eurgbp",
"currency": "gbp",
"volume": "1.123",
"change": "1.123",
"last": "1.123",
"high": "1.123",
"low": "1.123"
}]
我知道压平方法,但有一件重要的事情我做不到:
1) 货币不是原始数组的一部分。我需要将其从密钥名称中分离出来
到目前为止,我能够完全压平原始数组,但我没有运气去掉某些值(例如买入/卖出),并将"货币"值添加到新数组中。
与其说您不想太多地压平这个对象,不如说您只想提取ticker
值并将市场信息添加到单个项目中。为此,我认为你需要一种特别的方法:
var items = [],
cur,
ticker,
item;
for (var cur in data[0]) {
ticker = data[0][cur].ticker;
item = {};
["change", "last", "high", "low"].forEach(function (key) {
item[key] = ticker[key];
});
item.volume = ticker.vol;
item.market = cur;
item.currency = cur.substring(3);
items.push(item);
}
工作jsfiddle
相关文章:
- 为DataTables aoColumnDefs创建JavaScript数组(JSON格式)
- 使用 Javascript 将行添加到数组 json
- PHP数组JSON编码和该对象在ExtJs中解码
- 数组json转换为数组json
- 将Blob文本转换为Javascript中的数组/JSON对象
- 如何合并这些数组/json 对象
- 尝试从数组 JSON 键中删除引号
- JavaScript 中的数组 JSON
- 在数组 JSON 格式的 JavaScript 变量末尾添加新地址
- 如何访问这个Javascript数组(JSON对象?)
- rails传递记录数组(JSON)
- 按值提取对象/数组json vs数组
- 获取具有子数组json值的数组的值
- Object对象数组Json.字符串数组的字符串化
- 如何在Ext js 4.1中过滤数组json
- PHP -多维数组Json
- 正在分析数组Json以选择Tag
- 试图将字符串数据转换为数值数据,将数据放入数组的数组(Json)
- 从数组json、javascript中的specf值中删除引号
- 使用JavaScript或jQuery读取数组JSON