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

function isNotArchived(childrenName, childrenFilter) {
    return function(e) {
        var filtered = e.Where("$.archived===false");
        if (childrenName && childrenFilter) {
            return filtered.Select(function(c) {
                var result = $.extend(true, {}, c);
                result[childrenName] = $.Enumerable.From(c[childrenName])
                    .Let(childrenFilter)
                    .ToArray();
                return result;
            });
        }
        return filtered;
    };
}
var arr = [
	{id:1, archived:false,children:[
		{id:1,archived:true, subs:[
			{id:1,archived:true},
			{id:2,archived:true},
			{id:3,archived:true}
		]},
		{id:2,archived:false, subs:[
			{id:1,archived:false},
			{id:2,archived:false},
			{id:3,archived:true}
		]}
	]},
	{id:2, archived:true,children:[
		{id:1,archived:true, subs:[
			{id:1,archived:true},
			{id:2,archived:true},
			{id:3,archived:true}
		]},
		{id:2,archived:true, subs:[
			{id:1,archived:true},
			{id:2,archived:true},
			{id:3,archived:true}
		]}
	]}
];
var filtered = $.Enumerable.From(arr)
    .Let(isNotArchived("children", isNotArchived("subs", isNotArchived())))
    .ToArray();

$('body').empty().append('<pre>'+JSON.stringify(filtered, null, 2)+'</pre>');