Javascript:如何访问数组中的每个元素

Javascript:如何访问数组中的每个元素,javascript,jquery,json,indexing,Javascript,Jquery,Json,Indexing,我从数据库中查询两个数组,并将它们转换为json格式。设置如下所示: {"groups":"[apple,bee,car,dogs,egos,fruits]", "members":"[g,h,i,j,k,l]"} 我正在尝试访问组中的每个元素。组数组是一个列表。我尝试使用索引,它返回给我组[0]=“a”,组[1]=“p”。。。所以使用索引是行不通的 我还想计算groups数组或members数组中的元素数量,并使用.length返回字符长度,而不是元素的实际数量 如有任何建议,将不胜感激。谢

我从数据库中查询两个数组,并将它们转换为json格式。设置如下所示:

{"groups":"[apple,bee,car,dogs,egos,fruits]", "members":"[g,h,i,j,k,l]"}
我正在尝试访问组中的每个元素。组数组是一个列表。我尝试使用索引,它返回给我组[0]=“a”,组[1]=“p”。。。所以使用索引是行不通的

我还想计算groups数组或members数组中的元素数量,并使用.length返回字符长度,而不是元素的实际数量


如有任何建议,将不胜感激。谢谢。

这是因为
“[苹果、蜜蜂、汽车、狗、自负、水果]”
这是一个字符串。您必须在访问元素之前解析它

假设变量
test
中有JSON,那么我们必须删除
[
]
,并按如下方式拆分字符串:

test.groups = test.groups.replace("[", "")
test.groups = test.groups.replace("]", "")
test.groups = test.groups.split(',')
现在它包含:

["apple", "bee", "car", "dogs", "egos", "fruits"]

之所以会发生这种情况,是因为它是一根弦。您必须在访问元素之前解析它

假设变量
test
中有JSON,那么我们必须删除
[
]
,并按如下方式拆分字符串:

test.groups = test.groups.replace("[", "")
test.groups = test.groups.replace("]", "")
test.groups = test.groups.split(',')
现在它包含:

["apple", "bee", "car", "dogs", "egos", "fruits"]
JSON.parse(groups)
将不起作用,因为
[苹果、蜜蜂、汽车、狗、自我、水果]
不是正确的JSON字符串

[“苹果”、“蜜蜂”、“汽车”、“狗”、“自我”、“水果”]
-是正确的JSON字符串,可以解析

p.S.
成员
也不是正确的JSON字符串

//如果您有一些数据
数据={
组别:[“苹果”、“蜜蜂”、“汽车”、“狗”、“自我”、“水果”],
成员:[“g”、“h”、“i”、“j”、“k”、“l”]
};
//您可以将其转换为JSON字符串
jsonData=JSON.stringify(数据);
log('JSON数据:',jsonData);
//然后解析这个字符串
restoredData=JSON.parse(jsonData);
//在此之后,您可以再次访问对象成员
log('groups[0]:',restoredData.groups[0])
JSON.parse(groups)
将不起作用,因为
[苹果、蜜蜂、汽车、狗、自我、水果]
不是正确的JSON字符串

[“苹果”、“蜜蜂”、“汽车”、“狗”、“自我”、“水果”]
-是正确的JSON字符串,可以解析

p.S.
成员
也不是正确的JSON字符串

//如果您有一些数据
数据={
组别:[“苹果”、“蜜蜂”、“汽车”、“狗”、“自我”、“水果”],
成员:[“g”、“h”、“i”、“j”、“k”、“l”]
};
//您可以将其转换为JSON字符串
jsonData=JSON.stringify(数据);
log('JSON数据:',jsonData);
//然后解析这个字符串
restoredData=JSON.parse(jsonData);
//在此之后,您可以再次访问对象成员

log('groups[0]:',restoredData.groups[0]) 应考虑不同于数据库构建数组。

获取这些字母是因为它们位于索引引用的字符串中的位置

考虑使用regex和
split()
函数按现在的方式解析它们:

var obj = {"groups":"[apple,bee,car,dogs,egos,fruits]", "members":"[g,h,i,j,k,l]"};

// Regex replaces the square brackets with blank spaces and splits by the
// comma into an array
var groups = obj.replace(/[\[\]']+/g,'').split(',');
var members = obj.replace(/[\[\]']+/g,'').split(',');
现在
组[1]
将返回“bee”


阅读更多关于<代码> SPLIT()/< > > < /P> < p>您应该考虑不同于数据库构建数组。

获取这些字母是因为它们位于索引引用的字符串中的位置

考虑使用regex和
split()
函数按现在的方式解析它们:

var obj = {"groups":"[apple,bee,car,dogs,egos,fruits]", "members":"[g,h,i,j,k,l]"};

// Regex replaces the square brackets with blank spaces and splits by the
// comma into an array
var groups = obj.replace(/[\[\]']+/g,'').split(',');
var members = obj.replace(/[\[\]']+/g,'').split(',');
现在
组[1]
将返回“bee”


阅读更多关于
split()

如前所述,这不是正确的JSON格式,但有时您无法控制如何获取信息。因此,尽管这不是推荐的答案,但您可以使用简单的字符串解析,通过执行以下操作来获取所需的值:

var stuff = JSON.parse('{"groups":"[apple,bee,car,dogs,egos,fruits]", "members":"[g,h,i,j,k,l]"}');

var groups = stuff.groups.split("[")[1].split("]")[0].split(",");
var members = stuff.members.split("[")[1].split("]")[0].split(",");

console.log(groups); // ["apple", "bee", "car", "dogs", "egos", "fruits"]
console.log(groups[1]); //bee
console.log(members[0]); //g

我想重申,这不是一个理想的解决方案,但有时这是你所能做的一切

它不起作用,因为数组的所有元素都在一个字符串中

如前所述,这不是正确的JSON格式,但有时您无法控制如何获取信息。因此,尽管这不是推荐的答案,但您可以使用简单的字符串解析,通过执行以下操作来获取所需的值:

var stuff = JSON.parse('{"groups":"[apple,bee,car,dogs,egos,fruits]", "members":"[g,h,i,j,k,l]"}');

var groups = stuff.groups.split("[")[1].split("]")[0].split(",");
var members = stuff.members.split("[")[1].split("]")[0].split(",");

console.log(groups); // ["apple", "bee", "car", "dogs", "egos", "fruits"]
console.log(groups[1]); //bee
console.log(members[0]); //g

我想重申,这不是一个理想的解决方案,但有时这是你所能做的一切

听起来您可能没有将json正确解析为字符串数组支持数组,没有理由尝试将值作为字符串添加。听起来您可能没有将json正确解析为字符串数组支持数组,没有理由尝试将值作为字符串添加。您是对的,我在回答中添加了一个可能的解决方案。它是一个有效的JSON字符串,当解析为一个数组时只是一个无效数组
[“苹果”、“蜜蜂”、“汽车”、“狗”、“自我”、“水果”]
不是一个JSON字符串,只是一个数组值。我同意@SpencerWieczorek。我的意思是OP要还原的数组不是有效的JSON字符串。@LeonidZakharov因为它是一个数组,当我从数据库中查询时,我如何将双引号添加到数组的每个元素中???@moffittime你能显示返回JSONYou正确的代码吗,我在回答中添加了一个可能的解决方案。它是一个有效的JSON字符串,当解析为一个数组时只是一个无效数组
[“苹果”、“蜜蜂”、“汽车”、“狗”、“自我”、“水果”]
不是一个JSON字符串,只是一个数组值。我同意@SpencerWieczorek。我的意思是OP要还原的数组不是有效的JSON字符串。@LeonidZakharov因为我从数据库查询时它是数组,我如何将双引号添加到数组的每个元素中???@moffittime你能显示返回JSONY的代码吗你知道很多关于变态的知识)不,你知道很多关于变态的事)不,这是非常字面的。