Javascript:如何访问数组中的每个元素
我从数据库中查询两个数组,并将它们转换为json格式。设置如下所示: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返回字符长度,而不是元素的实际数量 如有任何建议,将不胜感激。谢
{"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的代码吗你知道很多关于变态的知识)不,你知道很多关于变态的事)不,这是非常字面的。