JSFiddle - React, Tailwind, and code Playground

by Viet27th

JavaScript

let originalArray = [
	{
  	name: 'Hoa quả',
    child: [
    	{
      	name: "Dưa",
        parent: 'Hoa quả',
        child: [
          {
          	name: "Dưa chuột",
            parent: 'Dưa'
          },
          {
          	name: "Dưa hấu",
            parent: 'Dưa'
          },
          {
          	name: "Dưa bở",
            parent: 'Dưa',
          }
        ]
      },
      
      {
      	name: "Chanh",
        parent: 'Hoa quả',
        child: [
          {
          	name: "Chanh leo",
            parent: 'Chanh'
          },
          {
          	name: "Chanh đào",
            parent: 'Chanh'
          }
        ]
      }
    ]
  },
  {
  	name: 'Đồ ăn'
  }
];

let shouldBeSelected = ['Chanh leo', 'Dưa hấu'];

/** This function add a field into node which is selected */
function addSelected(key, value) {
	if(shouldBeSelected.includes(value.name)) {
    value.selected = true;
    return value;
  }

  return value;
}
let afterAddSelected = JSON.parse(JSON.stringify(originalArray, addSelected));
/* console.log(afterAddSelected); */

// Flatmap nested object
let afterFlatMap = [];
function flatMap(key, value) {
 
  let convertToInt = +key;
  if(!isNaN(convertToInt)) {
    afterFlatMap.push(value);
  }
  
  return value;
}
JSON.stringify(afterAddSelected, flatMap);
console.log(afterFlatMap)