JavaScript:如何在它们的功能之外循环遍历这些项目?
JavaScript: how do I loop through these items outside of their function?
这是输入:
[ 'markdown',
[ 'para', '“a paragraph”' ],
[ 'hr' ],
[ 'para', '\'another paragraph\'' ],
[ 'para', 'test--test' ],
[ 'para', 'test---test' ],
[ 'bulletlist',
[ 'listitem', '“a list item”' ],
[ 'listitem', '“another list item”' ] ] ]
我正在使用此函数查找(递归)这些数组中的每个字符串:
function findRecur(tree) {
for (var i = 1; i < tree.length; i++) {
if (Array.isArray(tree[i]))
findRecur(tree[i])
else
console.log(tree[i])
}
}
function anotherFunc(tree, callback) {
findRecur(tree)
callback(null, tree)
}
输出:
"a paragraph"
'another paragraph'
test--test
test---test
"a list item"
"another list item"
我想在 anotherFunc
之外做 console.log
。所以我这样做了:
function findRecur(tree) {
for (var i = 1; i < tree.length; i++) {
if (Array.isArray(tree[i]))
findRecur(tree[i])
else
return tree[i]
}
}
function anotherFunc(tree, callback) {
findRecur(tree, function(node) {
console.log(node)
})
callback(null, tree)
}
但是没有任何输出。我想我必须向 findRecur
添加第二个参数,但不太确定如何以及添加什么。
有什么建议吗?
findRecur 需要将被调用的函数,它应该在 else
中调用它
例如
function findRecur(tree, fn) {
for (var i = 1; i < tree.length; i++) {
if (Array.isArray(tree[i]))
findRecur(tree[i])
else
fn(tree[i])
}
}
是的,您需要向 findRecur
函数添加回调参数。将两个参数传递给只查看第一个参数的函数是没有意义的。
function findRecur(tree, callback) {
for (var i = 1; i < tree.length; i++) {
if (Array.isArray(tree[i])) {
findRecur(tree[i], callback);
} else {
callback(tree[i]);
}
}
}
然后你可以这样调用你的函数:
findRecur(data, function(text) { console.log(text); });
或者像这样:
findRecur(data, console.log);
这是输入:
[ 'markdown',
[ 'para', '“a paragraph”' ],
[ 'hr' ],
[ 'para', '\'another paragraph\'' ],
[ 'para', 'test--test' ],
[ 'para', 'test---test' ],
[ 'bulletlist',
[ 'listitem', '“a list item”' ],
[ 'listitem', '“another list item”' ] ] ]
我正在使用此函数查找(递归)这些数组中的每个字符串:
function findRecur(tree) {
for (var i = 1; i < tree.length; i++) {
if (Array.isArray(tree[i]))
findRecur(tree[i])
else
console.log(tree[i])
}
}
function anotherFunc(tree, callback) {
findRecur(tree)
callback(null, tree)
}
输出:
"a paragraph"
'another paragraph'
test--test
test---test
"a list item"
"another list item"
我想在 anotherFunc
之外做 console.log
。所以我这样做了:
function findRecur(tree) {
for (var i = 1; i < tree.length; i++) {
if (Array.isArray(tree[i]))
findRecur(tree[i])
else
return tree[i]
}
}
function anotherFunc(tree, callback) {
findRecur(tree, function(node) {
console.log(node)
})
callback(null, tree)
}
但是没有任何输出。我想我必须向 findRecur
添加第二个参数,但不太确定如何以及添加什么。
有什么建议吗?
findRecur 需要将被调用的函数,它应该在 else
中调用它例如
function findRecur(tree, fn) {
for (var i = 1; i < tree.length; i++) {
if (Array.isArray(tree[i]))
findRecur(tree[i])
else
fn(tree[i])
}
}
是的,您需要向 findRecur
函数添加回调参数。将两个参数传递给只查看第一个参数的函数是没有意义的。
function findRecur(tree, callback) {
for (var i = 1; i < tree.length; i++) {
if (Array.isArray(tree[i])) {
findRecur(tree[i], callback);
} else {
callback(tree[i]);
}
}
}
然后你可以这样调用你的函数:
findRecur(data, function(text) { console.log(text); });
或者像这样:
findRecur(data, console.log);