JSFiddle - React, Tailwind, and code Playground

by Nalin Sajwan

JavaScript

var travereTreeUpdateIdLength = function(arrData, updateId, preIdText, idParentSeparator, updateLength, lengthKey) {
	console.time("[travereTreeUpdateIdLength]");

	if(updateId || updateLength) {
		// Text code for comma <",">.
		var parentSeparator = "&#44;";

		function traverse(arr, func, parent) {
		
		  var arrLength = arr.length;
		
			for (var i = 0; i < arrLength; i ++) {

				var nameKey = JSON.parse(JSON.stringify( arr[i].name ));

				func.apply(this, [nameKey, arr[i], parent]);

				if (typeof arr[i].children !== "undefined" && arr[i].children.length > 0) {

					var innerParent = "";

					if(typeof parent !== "undefined"
						&& parent.trim() !== "") {
						innerParent = parent + parentSeparator + nameKey;
					} else {
						innerParent = nameKey
					}

					traverse(arr[i].children, func, innerParent);
				}
			};
		}

		var text = "";
	  
		function countLastChildren(object) {
			if(object.children) {
				var return_val = 0;
				object.children.forEach(function (el) {
					return_val += countLastChildren(el);
				});
				return return_val; 
			} else {
				return 1;
			}
		};
	  
		traverse(arrData, function(key, value, parent) {
		
			// console.log("\nkey ==> ", key);
			// console.log("\nvalue ==> ", value);
			// console.log("\nparent ==> ", parent);
		  
			var taxoText = "";

			var parent = (typeof parent !== "undefined" && parent.trim() !== "") ? parent: "";

			var parentText = "";

			if(parent.trim() !== "") {
				parentText += idParentSeparator + parent.trim().split(parentSeparator).join(idParentSeparator);
			}
		
			taxoText = parentText + idParentSeparator + key;
			
			if(updateId) {
				value.id = preIdText + ("tree-" + taxoText).split(" ").join("").replace(/[^A-Za-z0-9_-]/g, "");
			}
			
			if(updateLength && typeof value.children !== "undefined") {
				var sample = JSON.parse(JSON.stringify( value ));
				var result = countLastChildren(sample);

				if(typeof lengthKey !== "undefined") {

					var userText = result>1?"...