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');