按对象中的值搜索

安东尼罗

我有一个函数,该函数生成一个深度和节点参数中子级数的对象。

问题是如何编写一个函数来按名称搜索树中的元素?

我试图使它像这样(下面的代码),但它没有输入子节点

const searchByName = (searchValue) => {
    for (let key in completeTree) {
        if(key.name === searchValue){
            return true
        }
    }
}

console.log(searchByName("namesurname"))

夸拉苏

可以使用如下所示的递归函数,因为您的代码每次都会生成名称,因此请多次运行它以查看找到和未找到的结果:

请注意,我在您的代码中更改了名称生成字符串。

const getRandomInt = (max) => {
    return Math.floor(Math.random() * Math.floor(max));
}

function getRandomIdentifier() {
    return Math.floor(Math.random() * Math.floor(70));
}

const generateName = (names) => {
    let first = getRandomInt(names.length)
    let second = getRandomInt(names.length)

    return names[first] + names[second]
}

const generateTree = (depth, level, names) => {
    let dateOptions = {
        day: "numeric",
        month: "numeric",
        year: "numeric",
        hour: "numeric",
        minute: "numeric",
        millisecond: "numeric" //millisecond
    }

    let date = new Date()

    let node = {
        name: generateName(names),
        id: getRandomIdentifier(), //unique
        modificationDate: date.toLocaleString('ru', dateOptions),
        type: "folder",
        children: []
    }

    if (depth > 0) {
        for (let i = 0; i < level; i++) {
            node.children.push(generateTree(depth - 1, level, names));
        }
    } else {
        node.type = "file"
    }

    return node
}

let completeTree = generateTree(1, 5, ['aaa', 'bbb', 'ccc'])


//recursive function like below can search in a tree of given structure
function searchByName(searchFor,currentNode){
  let result = "not found";
  if(currentNode.name.indexOf(searchFor)!=-1){
  //found
   result = currentNode;
  }
  if(currentNode.children.length>0){
    for(let i=0; i<currentNode.children.length; i++){
      result = searchByName(searchFor,currentNode.children[i]);
      if(result!="not found"){
        break;
      }
    }
  }
  return result;
}
console.log("Generated Tree:");
console.log(completeTree);
console.log("Search Result for bbbbbb:");
console.log(searchByName('bbbbbb',completeTree));
console.log("Search Result for aaabbb:");
console.log(searchByName('aaabbb',completeTree));
console.log("Search Result for aaaccc:");
console.log(searchByName('aaaccc',completeTree));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按熊猫系列中的值搜索

来自分类Dev

按日期搜索对象列表以获取最大值

来自分类Dev

使用arrayList对象按多个值执行搜索

来自分类Dev

在列表中搜索匹配的对象并分配值

来自分类Dev

在JSON对象中搜索数据值

来自分类Dev

在列表中搜索匹配的对象并分配值

来自分类Dev

在对象数组中搜索值

来自分类Dev

在对象数组 js 中搜索值

来自分类Dev

搜索对象数组中的所有值

来自分类Dev

在嵌套对象中搜索特定键的值

来自分类Dev

按多个值搜索

来自分类Dev

在JavaScript对象中按值查找

来自分类Dev

按值从JSON对象中删除元素

来自分类Dev

按值过滤.data()对象中的项目

来自分类Dev

按对象数组中的值过滤

来自分类Dev

在 Angular 5 中按对象值分组

来自分类Dev

如何按值从列表中删除对象

来自分类Dev

在对象数组的某些字段中按文本搜索过滤

来自分类Dev

如何在 LDAP 库中按类搜索对象?

来自分类Dev

在.NET中,是按值或按引用传递的类对象

来自分类Dev

根据对象的值搜索对象中的未知属性

来自分类Dev

在NSMutableArray中搜索对象并更改该对象的值

来自分类Dev

MySQL 8按数组中的值搜索JSON键

来自分类Dev

在.select查询方法中按值数组搜索

来自分类Dev

在ruby中按值搜索哈希返回nil

来自分类Dev

在MongoDB中按数组值搜索文档-Mongoid / Sinatra

来自分类Dev

如何使用mongoDB按数组中的多个值进行搜索?

来自分类Dev

在多维数组中按值搜索关键字

来自分类Dev

PHP 按值搜索数组中的所有条目