Javascript 在嵌套数组中查找和编辑?

Javascript 在嵌套数组中查找和编辑?,javascript,arrays,node.js,Javascript,Arrays,Node.js,我有一个动态变化的嵌套数组。我需要检查数组是否包含一个对象,然后修改该对象,保持其余项不变 样本: var input = [ ['a', 'b'], ['c', 'd'], ['e', ['f', 'g']], ['h', ['i', 'j']] ] 在这个嵌套数组中,我想查找f,并将其更改为f-is-found var result = [ ['a', 'b'], ['c', 'd'], ['e', ['f-is-found', 'g

我有一个动态变化的嵌套数组。我需要检查数组是否包含一个对象,然后修改该对象,保持其余项不变

样本:

var input = [
    ['a', 'b'],
    ['c', 'd'],
    ['e', ['f', 'g']],
    ['h', ['i', 'j']]
]
在这个嵌套数组中,我想查找
f
,并将其更改为
f-is-found

var result = [
    ['a', 'b'],
    ['c', 'd'],
    ['e', ['f-is-found', 'g']],
    ['h', ['i', 'j']]
]
问题是
f
可以更改它在数组中的位置,因此我不能使用任何硬编码的方式访问数组


非常感谢您的帮助,谢谢

您可以使用递归方法,通过循环遍历数组中的每个元素(以及循环遍历每个内部数组等…),然后检查当前值是否等于
f
,如果是,您可以修改它,否则,如果当前值是数组,您可以使用相同的函数再次搜索该数组

见下例:

const输入=[
['a','b'],
['c','d'],
[e',[f',[g']],
[h',[i',[j']
];
功能查找和更改(搜索、添加、arr){
arr.forEach((val,i)=>{
如果(!Array.isArray(val)){
如果(val==搜索){
arr[i]=val+toadd;
}
}否则{
查找和更改(搜索、添加、val);
}
});
}
findAndChange('f','is found',input);

控制台日志(输入)不太喜欢重新发明轮子。我们现在使用了大量的数据处理,一旦你了解了如何使用它,它就会变得非常强大。以下是您如何回答问题的方法

请注意,输入在适当的位置发生了变化。如果需要多个
'f'
实例,只需将
中止
更改为
,并将
rnt
更改为
计数
,即可查看替换了多少实例

//const objectScan=require('object-scan');
常量输入=['a','b'],['c','d'],['e',['f','g'],['h',['i','j']];
const modify=(searchValue、replaceValue、data)=>objectScan(['**'){
rtn:‘bool’,
中止:对,
filterFn:({value,parent,property})=>{
如果(值===搜索值){
父[属性]=替换值;
返回true;
}
返回false;
}
})(输入);
常数r=修改('f','f-is-found',输入);
console.log(r);//执行了真正的iff替换
//=>正确
控制台日志(输入);
/* =>
[a]、[b],
['c','d'],
['e',['f-is-found','g']],
[h',[i',[j']]
*/
。作为控制台包装{最大高度:100%!重要;顶部:0}