javascript - 在不改变原始数组的情况下过滤 javascript 树

标签 javascript arrays reactjs

我正在做一个 React 项目,我需要在不改变原始数组的情况下过滤对象数组

const array = [{
	name: 'bar',
  children: [{
  	name: 'foo',
    children: [{
    	name: 'baz123',
    }, {
    	name: 'baz',
    }]
  }]
}, {
	name: 'shallowKey'
}, {
	name: 'abc'
}];

例如,我只想过滤关注的对象及其子对象。

这是 jsfiddle

function filterData(data) {
  var r = data.filter(function(o) {
    if (o.children) o.children = filterData(o.children);
    return o.name.length === 3;
  })
  return r;
}

我从一个 stackoverflow 问题中尝试了该功能,但是有没有一种方法可以在不改变数据的情况下使用相同的功能。谢谢

最佳答案

如果对象中没有涉及任何原型(prototype)或函数,一种简单的复制方法是将原始字符串化并将其解析回对象

var r= JSON.parse(JSON.stringify(data)).filter(...

关于javascript - 在不改变原始数组的情况下过滤 javascript 树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48466262/

相关文章:

javascript - 了解哈希表和冲突检测

java - 如何在 java spring boot 中将字节数组作为内存文件返回?

C++ strcpy_s 在复制到新的 char 数组时抛出错误

javascript - react : get custom checkbox's checked attribute

javascript - 跨浏览器 HTML 布局的正确方法是什么?

javascript - 如何将无序列表放置在一个圆圈中?

javascript - 找不到模块 : Error: Cannot resolve module 'react-redux'

javascript - 将 Strophe.js 与 React Native 结合使用

java - 如何查看浏览器版本和更改css

javascript - 根据索引名称动态解析JSON数据