我有这个javascript数组:
var data = ([
['Price', 'Time'],
['1.10661', 1467923348, ],
['1.10675', 1467923349, ],
['1.10681', 1467923350, ],
['1.10690', 1467923351, ],
]);
我使用ajax向我的服务器发送请求,并且我将这个json对象作为响应:
[{"PRICE":"1.10662","TIME":"1467923352"},{"PRICE":"1.10663","TIME":"1467923353"}]
我想要做的是解析响应并将对象推送到我的数组中,以便最终结果应为:
var data = ([
['Price', 'Time'],
['1.10661', 1467923348, ],
['1.10675', 1467923349, ],
['1.10681', 1467923350, ],
['1.10690', 1467923351, ],
['1.10662', 1467923352, ],
['1.10663', 1467923353, ],
]);
请记住每次请求时响应更改时收到的对象数量。在示例中,Im give只接收了两个对象,但这种情况一直在变化。
提前谢谢
答案 0 :(得分:0)
我想你可以把你的问题分成两部分。首先考虑如何使response
数据在数据格式方面与data
看起来相同。然后将2个数组合并为一个。
这是我的方法。首先使用map
api遍历resp
中的每个对象,并提取PRICE和TIME的属性值并将其存储到新数组中。这应该会给你一个数组数组,其中0位为价格,位置1为时间。
[['1.10662','1467923352'],['1.10663','1467923353']]
然后使用concat
api将2个数组合并为一个。
示例:强>
var data = ([
['Price', 'Time'],
['1.10661', 1467923348, ],
['1.10675', 1467923349, ],
['1.10681', 1467923350, ],
['1.10690', 1467923351, ],
]);
var resp = [{"PRICE":"1.10662","TIME":"1467923352"},{"PRICE":"1.10663","TIME":"1467923353"}];
data = data.concat(
resp.map(entity => { return [ entity.PRICE, entity.TIME ]; })
);
<强>输出:强>
[ [ 'Price', 'Time' ], [ '1.10661', 1467923348 ], [ '1.10675', 1467923349 ], [ '1.10681', 1467923350 ], [ '1.10690', 1467923351 ], [ '1.10662', '1467923352' ], [ '1.10663', '1467923353' ] ]
您可能希望在此处详细了解map
和concat
api;
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/concat
答案 1 :(得分:0)
非常感谢您的回答!我找到了解决方案,让我与你分享。
(这个例子有点不同,但想法完全一样)
答案 2 :(得分:0)
OrderController.getOrderInfo = function(req, res) {
superagent
.get(config.API_URL + '/classes/Order/' + req.params.id)
.set('X-Parse-Application-Id', config.keys.appId)
.set('X-Parse-Master-Key', config.keys.master)
.query('include=salesmanID,imprintTypeID,customerID')
.query('where')
.end(function(err, results) {
if(err) {
console.log(err);
} else if(results.badRequest){
console.error(results.error);
res.status(results.status).send({error: results.error});
}else {
res.send(results.body);
}
});
};