紫﹏色ふ单纯

文章 评论 浏览 31

紫﹏色ふ单纯 2022-05-04 13:55:21

遍历树

var entry = {
  a: {
    b: {
      c: {
        dd: 'abcdd'
      }
    },
    d: {
      xx: 'adxx'
    },
    e: 'ae'
  },
  hh: [{
    aa: 'aa'
  }]
}

function bar2(obj, parentKey) {
  let nodes = []
  Object.keys(obj).forEach(key => {
    let parentKeyNext = parentKey ? `${parentKey}.${key}` : key
    if(typeof obj[key] === 'object') {
      nodes = nodes.concat(bar2(obj[key], parentKeyNext))
    } else {
      nodes.push({
        parentKey: parentKeyNext,
        val: obj[key]
      })
    }
  })
  return nodes
}

console.log(bar2(entry, ''))
/*
[
  { parentKey: 'a.b.c.dd', val: 'abcdd' },
  { parentKey: 'a.d.xx', val: 'adxx' },
  { parentKey: 'a.e', val: 'ae' },
  { parentKey: 'hh.0.aa', val: 'aa' }
]

*/

第 111 题:编程题,写个程序把 entry 转换成如下对象

紫﹏色ふ单纯 2022-05-04 13:51:31

var a = 0;
if(true){
console.log(a);
a = 1;
function a(){};
a = 21;
console.log(a);
}
console.log(a);
大家可以帮忙看下这个题吗?第三个输出没搞懂为什么

JavaScript 深入之变量对象

紫﹏色ふ单纯 2022-05-04 13:37:04

@ZodiacSyndicate
这个写法想查112的时候不就查不出来了..

第 92 题:已知数据格式,实现一个函数 fn 找出链条中所有的父级 id

紫﹏色ふ单纯 2022-05-04 05:13:24

为什么React会选择先“标记”调用更新方法(setState, forceUpdate等)的节点及其祖先节点,然后再从root开始遍历呢?
首先,考虑在一次batching中(也就是浏览器触发一次回调),在冒泡的过程中可能多个节点都绑了事件,那么如果不用标记法,而去即时处理的话就会多次重复更新造成很大浪费,另外,由于冒泡是从子到父而更新是父及子更加会加重浪费;其次,在事件回调函数中,可能会调用dispatchEvent而造成嵌套调用,与同一个事件触发多个回调的效果类似;最后,就算实际上只有一个节点及其子需要更新,造成的浪费也非常微乎其微,只有节点自身及其祖先的邻居节点会稍微遍历一下(如果是一个有很多tr的table,一个tr更新会导致其他tr都被遍历)。

React v16.2 源码阅读笔记之在 onClick 中调用 setState 会发生什么?

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文