Javascript 我想拆分一个字符串以在循环中获取值

Javascript 我想拆分一个字符串以在循环中获取值,javascript,Javascript,我想拆分以下字符串: var tree = [{ "id" : 1 }, { "id" : 2, "children" : [{ "id" : 3 }, { "id" : 4 }, { "id" : 5, "children" : [{ "id" : 6 } ] } ] }]; 我要拆分此字符串以获取值: 1,2,3,4,5,6. 现在我如何分割它以获得

我想拆分以下字符串:

var tree = [{
  "id" : 1
}, {
  "id" : 2,
  "children" : [{
      "id" : 3
    }, {
      "id" : 4
    }, {
      "id" : 5,
      "children" : [{ 
          "id" : 6
        }
      ] 
    }
  ]
}];
我要拆分此字符串以获取值:

1,2,3,4,5,6.

现在我如何分割它以获得值。

如果这是一个javascript对象,那么遍历树并收集ID可能会更快。 如果这是一个字符串,则可以求值以获取树对象

function collect(tree,arr){
  for(var i=0;i<tree.length;i++){
     arr.push(tree[i].id)
     for(var j=0;j<tree[i].children;j++){
        collect(tree[i].children[j],arr)
    }
 }
}

如果这真的是一个字符串,另一种方法是使用正则表达式(如果字符串不是可以求值的代码,那么将来可以使用这种方法)

将返回:

[1, 2, 3, 4, 5, 6]

(假设整个字符串都在一个名为“str”的变量中。)

那里的内容看起来像
JSON

试试这个:

var myObject = eval('(' + tree + ')');

var ids = findIds(myObject);

// this is untested, but the principle applies
function findIds(o) {

    var ids = new Array();

    for (var i = 0; i < o.length; i++) {

        ids.push(o[i].id);
        ids.push(findIds(o[i].children));
    }

    return ids;
}
var myObject=eval(“(“+tree+”)”);
变量ID=findIds(myObject);
//这是未经测试的,但原则适用
函数findIds(o){
var id=新数组();
对于(变量i=0;i
我总是因为没有提供“普通javascript”的答案而被骂,但就这样吧。看起来你想要的是:


你也可以用它来做,但是你需要把它展平,这样就不那么优雅了。

那不是字符串。你真的把代码当作字符串吗???试试
myString.match(/\d+//g)
或者
myString.split(/\d+/)
你自己试过吗?您只是发布了一个数组,以获取您的
,甚至在询问之前都没有尝试。
[1, 2, 3, 4, 5, 6]
var myObject = eval('(' + tree + ')');

var ids = findIds(myObject);

// this is untested, but the principle applies
function findIds(o) {

    var ids = new Array();

    for (var i = 0; i < o.length; i++) {

        ids.push(o[i].id);
        ids.push(findIds(o[i].children));
    }

    return ids;
}
var tree = [{   "id" : 1 }, {   "id" : 2,   "children" : [{
      "id" : 3
    }, {
      "id" : 4
    }, {
      "id" : 5,
      "children" : [{ 
          "id" : 6
        }
      ] 
    }   ] }];

jsel.match(tree, '.id');