萌︼了一个春

文章 评论 浏览 32

萌︼了一个春 2022-05-04 13:55:21

bfs

function flatObj(entry) {
	const queue = Object.entries(entry)
	const res = {}
	while (queue.length) {
		const [key, obj] = queue.pop()
		for (const [k, v] of Object.entries(obj)) {
			if (typeof v !== 'object') {
				res[`${key}.${k}`] = v
			} else {
				queue.push([`${key}.${k}`, v])
			}
		}
	}
	return res
}

bfs的话应该queue.shift(),另外没考虑{a:1}这种情况,按你代码输出是{},简单修改下:

function flatObj(entry) {
  const queue = Object.entries(entry)
  const res = {}
  while (queue.length) {
    const [key, obj] = queue.shift()
    if (typeof obj === 'object') {
      for (const [k, v] of Object.entries(obj)) {
        queue.push([`${key}.${k}`, v])
      }
    } else {
      res[key] = obj
    }
  }
  return res
}

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

萌︼了一个春 2022-05-04 13:54:59

冷水
1.externals方案的缺点是什么呢,是外链的包如果升级需要手动添加hash
2.拆分dll,本身并没有问题,但是放在服务器部署的时候,那什么时候应该构建dll的部分是一个js界通用难题

第 122 题:webpack 打包 vue 速度太慢怎么办?

萌︼了一个春 2022-05-04 13:48:50

@mqyqingfeng 是不是当 target[name]是对象的时候,src保存的是target[name]的指针副本,
当再次给它赋值时,只是改变了src的指向,而target[name]没有变化。即前面参数传递的意思是一样的。

JavaScript 专题之从零实现 jQuery 的 extend

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

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