Json对象被推入javascript数组

时间:2016-07-07 23:06:27

标签: arrays json object push

我有这个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只接收了两个对象,但这种情况一直在变化。

提前谢谢

3 个答案:

答案 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' ] ]

您可能希望在此处详细了解mapconcat 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);
                }
            });
    };