JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/linq.js/2.2.0.2/jquery.linq.min.js"></script>

JavaScript

var array = [
	{id:1, archived:false,children:[
		{id:1,archived:true, children:[
			{id:1,archived:true},
			{id:2,archived:true},
			{id:3,archived:true}
		]},
		{id:2,archived:false, children:[
			{id:1,archived:false},
			{id:2,archived:false},
			{id:3,archived:true}
		]}
	]},
	{id:2, archived:true,children:[
		{id:1,archived:true, children:[
			{id:1,archived:true},
			{id:2,archived:true},
			{id:3,archived:true}
		]},
		{id:2,archived:true, children:[
			{id:1,archived:true},
			{id:2,archived:true},
			{id:3,archived:true}
		]}
	]}
];

function runFilter(arr,attr,val,child) {
	arr2 = [];
	for (a in arr) {
  	if (typeof arr[a] === "object") {
    	if (arr[a][attr] == val) {
      	console.log(arr[a][attr]+" = "+val)
      	if (arr[a][child] !== undefined) {
          arr[a][child] = runFilter(arr[a][child],attr,val,child);
        }
        if (arr[a] !== undefined) {
        	arr2.push(arr[a]);
        }
      }
    }
  }
  return arr2;
}

console.log(runFilter(array,"archived",false,"children"));