js json对象从子集找父级怎么找,有方法吗

JavaScript06

js json对象从子集找父级怎么找,有方法吗,第1张

JavaScript 本身是不支持这种查找的, 因为"子对象"只是父对象中的一个引用, 它也可以被其它对象引用, 这样一个"子对象"就可能有多个"父对象". 能实现的是在代码运行中获取它的上级对象.

var Obj = function()

{

    this.child = {

        parent: {},

        get_parent: function()

        {

            return this.parent

        }

    }

    this.init = function()

    {

        this.child.parent = this

    }

    this.init()

}

var o = new Obj

console.log(o.child.get_parent())

//传入参数:需要遍历的对象,需要匹配的id,获取所有的父级节点的Id

        function findIdList(data2, id, children = 'children', level = 0) {

  var arrRes = []

  let obj = {

      id: 0,

      [children]: data2

  }

  let rev = (data, id, level) => {

    if (!data || !data[children] || !data[children].length) {

      return

    }

    for (var i = 0 i < data[children].length i++) {

      let item = data[children][i]

      if (item.id == id) {

        // 将匹配到的结果保存到数组

        arrRes.unshift({ level, activeId: item.id })

        // 递归它的父级

        rev(obj, data.id, 0)

        break

      } else if (item[children] && item[children].length > 0) {

        //如果有子集,则把子集作为参数重新执行本方法

        rev(item, id, level + 1)

      }

    }

  }

  rev(obj, id, level)

  return arrRes

}

let list = [

    {id: 1, children: [

        {id: 11, children: [{id: 12}]}

    ]},

    {id: 2, children: [{id:21, children: [{id: 31}]}]}

]

let b = findIdList(list, 21)

console.log(b) // [ { level: 0, activeId: 2 }, { level: 1, activeId: 21 } ]

html代码:

<div id="test">

<div></div>

<div></div>

</div>

js代码:

<script>

function dom() {

var s= document.getElementById("test")

del_ff(s) //清理空格

var chils= s.childNodes //得到s的全部子节点

var par=s.parentNode //得到s的父节点

var fc=s.firstChild //获得s的第一个子节点

var lc=s.lastChile //获得s的最后一个子节点

}

</script>

建议:使用jquery来获取父级节点跟子级节点会更方便。