2

我想从下面的字符串中获取逗号分隔的 ID 和类型。

我尝试过拆分,但这需要多次拆分才能获取所需的结果。

请建议一种有效的方法来获取所需的输出,例如1234,4321使用 js/jquery。

var tempString=
'[{"id":"1234","desc":"description","status":"activated","type":"type","name":"NAME"},
  {"id":"4321","desc":"description1","status":"inactivated","type":"type","name":"NAME1"}]';
4

4 回答 4

3

要得到"1234,4321",你可以做

var ids = tempString.map(function(v){return v.id}).join(',');

如果你想兼容IE8,那么你可以这样做

var ids = $.map(tempString, function(v){return v.id}).join(',');

以下问题编辑:

如果tempString不是数组而是真正的 JSON 字符串,那么你会这样做

var ids = $.map(JSON.parse(tempString), function(v){return v.id}).join(',');
于 2013-02-08T16:38:31.493 回答
0

正如所指出的,这不是您示例中的字符串。一些引号不见了。

无论如何,请查看@dystroy 的答案,但我认为您正在处理 JSON 对象,并且您可能应该使用 json 解析器(如果必须的话,甚至可以使用 javascripts 原始 eval),然后将您的组件作为对象属性和数组获取。

查看jquery 的 parseJSON

于 2013-02-08T16:41:33.870 回答
0

您应该使用任何用于 JSON 的 Javascript 解析器 api 将给定的字符串解码为键和后续值。正如'Miquel'所提到的,jQuery 有一个

于 2013-02-08T16:44:21.620 回答
0

首先你上面的不是一个字符串,它是一个对象数组。

如果它是一个字符串(像这样)

var tempString = '[{"id":"1234","desc":"description","status":"activated","type":"type","name":"NAME"}]

[{"id":"4321","desc":"description1","status":"inactivated","type":"type","name":"NAME1"}]';

然后你会想要使用类似 .match(); https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/match

var IDs = tempString.match(/([0-9]+)/gi);

于 2013-02-08T16:46:43.023 回答