JSON Stringify使对象键的对象数组值为空

时间:2018-08-16 12:07:02

标签: javascript arrays json object

有人可以帮我这个忙吗,我正在尝试达到这样的目的:

{ "docs": [
{ "_id": "item" },
{ "_id": "item" },
{ "_id": "item" }
] }

所以我首先要创建一个带有关键文档的对象,该对象是我要插入的数组

let query = { docs: [] };

i然后有大约80个键值对项目的列表:

{ _id: item }

我在forEach循环中将其推送到文档中

 query.docs.push(item);

所以当我去字符串化

JSON.stringify(query);

它返回对象,但数组为空。

{ "docs": [] }

我不知道为什么会这样。任何人都知道解决此问题的方法以获得预期结果吗?预先感谢

  

实际代码:

let elasticQuery = {
    docs: []
  };

  axios({
    method: "post",
    headers: {
      "Content-Type": "application/json"
    },
    url: sent2VecUrl,
    data: {
      selected_text: query
    }
  }).then(results => {
    results.data.response.forEach(item => {
      elasticQuery.docs.push({ _id: item });
    });
  });


  console.log("without: " + elasticQuery + " with stringify :" + JSON.stringify(elasticQuery));
  

这是服务器的响应:

enter image description here

3 个答案:

答案 0 :(得分:3)

在.then函数中移动控制台。这是asyn调用,您的控制台在您的诺言得到解决之前就在打印。

axios({
method: "post",
headers: {
  "Content-Type": "application/json"
},
url: sent2VecUrl,
data: {
  selected_text: query
}})
.then(results => {
   results.data.response.forEach(item => {
      elasticQuery.docs.push({ _id: item });
   });
   console.log("without: " + elasticQuery + " with stringify :" + JSON.stringify(elasticQuery));
});

答案 1 :(得分:0)

您的代码看起来不错。

.then(results => {
    results.data.response.forEach(item => {
      elasticQuery.docs.push({ _id: item });
    });

      console.log(elasticQuery); 
  });

答案 2 :(得分:0)

代替此:

results.data.response.forEach(item => {
      elasticQuery.docs.push({ _id: item });
});

执行此操作:

  elasticQuery.docs = results.data.response.map(item => ({ _id: item }) )