在 Javascript 中将 "Circular" 添加到我的数组中
Getting a "Circular" added to my array in Javascript
在学习的过程中Javascript。
我写了一个代码,它遍历一个数组并将它们添加到 res
数组。它还将遍历嵌套数组并将它们逐个元素添加到 res
。我为此使用了递归。但是在每个嵌套数组完成后,我得到一个 Circular
添加到 res
。找不到问题所在。
var res = ["oldarray"];
function findthis(xar){
for(let n=0; n<xar.length; n++) {
if(xar[n] instanceof Array) {
res.push(findthis(xar[n]));
} else {
res.push(xar[n]);
}
}
return res;
}
var d = ["z", 9, 2, ["r", "r", ["X","X","X","X"], "r"], "f", "x"];
console.log(findthis(d));
给出的输出。当它应该是一个没有添加 [Circular]
的数组时
['oldarray', 'z', 9, 2, 'r', 'r', 'X', 'X', 'X', 'X', [Circular], 'r', [Circular], 'f', 'x']
[Circular]
当您尝试打印数组或包含对自身的引用的对象时,会打印出来。在这里,您得到它是因为您将 findthis
(即 res
)的结果推入 res
本身。要解决此问题,只需在这种情况下删除对 push
的调用:
function findthis(xar){
for(let n=0; n<xar.length; n++) {
if(xar[n] instanceof Array) {
findthis(xar[n]); // Here! findthis already pushes to res, no need for another push
} else {
res.push(xar[n]);
}
}
return res;
}
在学习的过程中Javascript。
我写了一个代码,它遍历一个数组并将它们添加到 res
数组。它还将遍历嵌套数组并将它们逐个元素添加到 res
。我为此使用了递归。但是在每个嵌套数组完成后,我得到一个 Circular
添加到 res
。找不到问题所在。
var res = ["oldarray"];
function findthis(xar){
for(let n=0; n<xar.length; n++) {
if(xar[n] instanceof Array) {
res.push(findthis(xar[n]));
} else {
res.push(xar[n]);
}
}
return res;
}
var d = ["z", 9, 2, ["r", "r", ["X","X","X","X"], "r"], "f", "x"];
console.log(findthis(d));
给出的输出。当它应该是一个没有添加 [Circular]
的数组时['oldarray', 'z', 9, 2, 'r', 'r', 'X', 'X', 'X', 'X', [Circular], 'r', [Circular], 'f', 'x']
[Circular]
当您尝试打印数组或包含对自身的引用的对象时,会打印出来。在这里,您得到它是因为您将 findthis
(即 res
)的结果推入 res
本身。要解决此问题,只需在这种情况下删除对 push
的调用:
function findthis(xar){
for(let n=0; n<xar.length; n++) {
if(xar[n] instanceof Array) {
findthis(xar[n]); // Here! findthis already pushes to res, no need for another push
} else {
res.push(xar[n]);
}
}
return res;
}