从JSON对象创建一个新的jQuery数组

时间:2017-06-29 19:19:37

标签: javascript jquery arrays json

我有一个PHP脚本,它在控制台中返回一个JSON对象:

[{"CONTAINER_NUMBER":"CONT1234567","RETURN_POOL":"GARDENCITY"},{"CONTAINER_NUMBER":"CONT987654","RETURN_POOL":"NORTHTOWN"}]

我需要做的就是创建另一个只包含CONTAINER_NUMBER值的数组。它应该是这样的:

 "CONT1234567", "CONT987654" 

我发现了这个:http://jsfiddle.net/arunpjohny/ygqaa/

我改变它看起来如下所示:

$.POST('phpScript.php', {cntArray:cntArray}, function(data)
{
  var containers = JSON.parse(data);

  var obj = {};
  $.each(containers, function(i, v){
   obj[v.CONTAINER_NUMBER]
  });
  console.log(obj)
});

但是控制台只显示一个空白数组。

2 个答案:

答案 0 :(得分:1)

如果您只想要一个键为ID的对象:

obj[v.CONTAINER_NUMBER]应为obj[v.CONTAINER_NUMBER] = ''

如果您需要一系列ID:

$.post('phpScript.php', {cntArray:cntArray}, function(data)
{
  var containers = JSON.parse(data);

  var ids = [];
  $.each(containers, function(i, v){
   ids.push(v.CONTAINER_NUMBER);
  });
  console.log(ids)
});

或者,有点清洁:

$.post('phpScript.php', {cntArray:cntArray}, function(data)
{
  var containers = JSON.parse(data);

  var ids = $.map(containers, function(i, v){
   return v.CONTAINER_NUMBER;
  });
  console.log(ids);
});

答案 1 :(得分:0)

您的代码存在的问题是,您传递的值是否具有对象的键!

var x = {}
x[1]
x[2]

所以你得到一个空物体!但正如你所提到的,那不是你想要的,你不想得到一个对象,而是一个数组。

您可以做的是使用map并根据需要将所有值放入数组中!见下文:

var json = [{"CONTAINER_NUMBER":"CONT1234567","RETURN_POOL":"GARDENCITY"},{"CONTAINER_NUMBER":"CONT987654","RETURN_POOL":"NORTHTOWN"}]

var res = json.map((obj) => obj.CONTAINER_NUMBER)

console.log(res)

或查看实时示例



var json = [{"CONTAINER_NUMBER":"CONT1234567","RETURN_POOL":"GARDENCITY"},{"CONTAINER_NUMBER":"CONT987654","RETURN_POOL":"NORTHTOWN"}]

var res = json.map((obj) => obj.CONTAINER_NUMBER)

console.log(res)