小编Mat*_*t K的帖子

用于结束chrome选项卡的键盘快捷方式

在JS中编码,有时我会搞砸并创建一个无限循环.其他时候,我在debugger内部循环并且无法快速刷新,因为代码必须在刷新发生之前完成运行.无论如何,崩溃选项卡然后刷新通常会更快.

如何实现键盘快捷键以崩溃和刷新当前选项卡?原生,第三方扩展,OSX应用程序是公平的游戏.Chrome版本44.

javascript macos google-chrome

31
推荐指数
3
解决办法
6835
查看次数

ES7使用await生成器从一组promise中获取结果

鉴于一系列承诺,在ES7中获得结果的惯用方法是什么?

这就是我想要做的事情:

async function getImports() {
  let imports = [System.import('./package1.js'), System.import('./package2.js')];
  let promises = await* imports;
  let results = [];
  await promises.forEach(val => val.then(data => results.push(data))); //seems hacky
  console.log(results); // array of 2 resolved imports
}
Run Code Online (Sandbox Code Playgroud)

结果是正确的,但我仍然在做a forEach和a then将已解决的承诺转化为结果.这对我来说似乎不对.有更干净的方式吗?

javascript ecmascript-harmony ecmascript-6 ecmascript-7

26
推荐指数
1
解决办法
1万
查看次数

在圆圈内均匀分布x点

我想在一个圆圈内统一分配一组预定的点.通过均匀分布,我的意思是它们应该彼此相等地距离(因此随机方法将不起作用).我尝试了六角形方法,但是我一直遇到问题,一直到达最外半径.

我当前的方法是嵌套for循环,其中每个外部迭代减少了半径和点数,每个内部循环均匀地丢弃新半径上的点.从本质上讲,它是一堆嵌套的圆圈.不幸的是,它远非均匀.有关如何正确执行此操作的任何提示?

嵌套的for循环结果

math geometry

15
推荐指数
2
解决办法
6381
查看次数

GraphQLInterfaceType和GraphQLUnionType的真实示例

我很难理解何时使用GraphQLInterfaceTypeGraphQLUnionType.

我有RTFM:

任何人都可以提供一个真实世界的例子,当这些通过我的厚头有用时会有用吗?

graphql graphql-js

15
推荐指数
2
解决办法
6613
查看次数

有效地找到将较小的箱子分配给较大箱柜的每种组合

假设我有7个小垃圾箱,每个垃圾箱里面都有以下数量的弹珠:

var smallBins = [1, 5, 10, 20, 30, 4, 10];
Run Code Online (Sandbox Code Playgroud)

我将这些小容器分配给2个大容器,每个容器具有以下最大容量:

var largeBins = [40, 50];
Run Code Online (Sandbox Code Playgroud)

我想找到各种小容器如何在不超出容量的情况下分布在大容器上的组合(例如,将小容器#4,#5放在大容器#2中,其余放在#1中).

约束:

  • 必须将每个小容器分配给一个大容器.
  • 一个大垃圾箱可以留空

这个问题很容易在O(n ^ m) O(2 ^ n)时间内解决(见下文):只需尝试每个组合,如果不超过容量,请保存解决方案.我想要更快的东西,可以处理可变数量的箱子.我可以用什么模糊的图论算法来减少搜索空间?

//Brute force
var smallBins = [1, 5, 10, 20, 30, 4, 10];
var largeBins = [40, 50];

function getLegitCombos(smallBins, largeBins) {
  var legitCombos = [];
  var assignmentArr = new Uint32Array(smallBins.length);
  var i = smallBins.length-1;
  while (true) {
    var isValid = validate(assignmentArr, smallBins, largeBins);
    if (isValid) legitCombos.push(new Uint32Array(assignmentArr));
    var allDone = increment(assignmentArr, largeBins.length,i); …
Run Code Online (Sandbox Code Playgroud)

javascript algorithm math graph-theory mathematical-optimization

9
推荐指数
1
解决办法
154
查看次数

在包之间共享手写笔表

我有一个应用程序分成几个包.这些包中的每一个都有自己的.styl表来设置特定包提供的组件的样式.目前,这些.styl床单都依赖于相同的功能,混入,并在声明的变量variables.import.styl即是在./client/styles文件夹中.我这样做是因为如果改变errorRed颜色variables.import.styl,它会改变所有包装的颜色.

要访问这些变量,在每个包的样式表的顶部,我有一个@import "./client/styles/variables.import".或者,我可以为手写笔变量创建一个单独的包,然后使该包成为所有其他包中的依赖项.我不喜欢这两种选择,但我认为这是我为保持样式表被包装分开而付出的代价.谁有更优雅的选择?

值得注意的是,在Meteor devel分支上,我以前的解决方案不再有效(手写笔无法看到包根目录上方的文件夹).无论在下一版本发布之前是否修复,我都知道必须有一个更清洁的解决方案.

meteor

7
推荐指数
1
解决办法
181
查看次数

ES2015在相同范围内两次构造对象

是否有一种干净的方法来从同一范围内的2个相似对象中构造相同的变量?

function(oldState, newState) {
  let {foo, bar} = oldState;
  // do stuff //
  let {foo, bar} = newState; // illegal double declaration in same scope
  {foo, bar} = newState; // illegal, not sure why
  let {foo: foo1, bar: bar1} = newState; // legal but ugly
  foo = newState.foo; // legal, but requires multiple lines
}
Run Code Online (Sandbox Code Playgroud)

ecmascript-harmony ecmascript-6

7
推荐指数
1
解决办法
794
查看次数

在webstorm中更改JSX的块注释

在webstorm中,jsx具有与javascript相同的颜色和样式,非常棒.但是,块注释不适用于jsx /* */vs {/* */}..

我尝试*.jsxFile Types首选项中删除作为已注册的javascript模式并使jsx成为自己的文件类型,但后来我失去了所有自定义颜色和样式.有没有办法在每个模式的基础上调整块注释字符,同时使样式引用纯javascript规则?

webstorm react-jsx

6
推荐指数
1
解决办法
846
查看次数

将node_modules标记为在webstorm 10中默认排除

每次我从github下载一个项目时,我运行npm install,它会在要创建的node_modules文件夹上触发reindex.这种索引减慢了我的计算机速度.一个丑陋的解决方法是创建一个空的node_modules文件夹,将其排除,然后运行npm install.如何在默认情况下禁用每个项目中的node_modules文件夹的索引?Webstorm为Meteor项目做了这个.meteor/local,所以我认为它是可能的.

webstorm

6
推荐指数
1
解决办法
4714
查看次数

在递归函数中传递常量

我正在重构一些代码,并想知道在递归函数中传递常量时,哪种模式占用内存最少且最容易阅读.

例如,我可以将每个常量传递给下一个递归函数,但这些参数是常量并不明显:

const startFoo = (myArray, isFoo, isBar) => {
  console.log(isFoo, isBar);
  startFoo(myArray, isFoo, isBar);
};
Run Code Online (Sandbox Code Playgroud)

或者,我可以有2个函数,并在第一个的闭包中保持常量,但我很好奇,如果每次调用第一个函数时重新创建第二个函数将导致不必要的对象创建和GC:

const startFoo = (myArray, isFoo, isBar) => {
  const foo = myArray => {
    console.log(isFoo, isBar);
    foo(myArray);
  };
  foo(myArray);
};
Run Code Online (Sandbox Code Playgroud)

最后,我可以将它保留在一个函数中,并只缓存初始值:

const startFoo = (myArray, isFoo, isBar) => {
  if (!startFoo.cache) {
    startFoo.cache = {
      isFoo,
      isBar
    }
  }
  const {isFoo, isBar} = startFoo.cache;
  console.log(isFoo, isBar);
  startFoo(myArray);
};
Run Code Online (Sandbox Code Playgroud)

所有3人看起来他们都会成为即将到来的(这里是)TCO的好候选人,所以我不认为这会影响决定,但如果确实如此,那也很好!

javascript recursion

6
推荐指数
1
解决办法
575
查看次数