小编Tha*_*you的帖子

如何在JavaScript中比较数组?

我想比较两个阵列......理想情况下,有效率.没有什么花哨的,只要true它们是相同的,false如果不相同的话.毫不奇怪,比较运算符似乎不起作用.

var a1 = [1,2,3];
var a2 = [1,2,3];
console.log(a1==a2);    // Returns false
console.log(JSON.stringify(a1)==JSON.stringify(a2));    // Returns true
Run Code Online (Sandbox Code Playgroud)

每个数组的JSON编码都有,但有没有更快或更"简单"的方法来简单地比较数组而不必迭代每个值?

javascript arrays json

894
推荐指数
24
解决办法
81万
查看次数

如何在javascript中初始化数组的长度?

我在JavaScript中使用数组(包括w3schoolsdevguru)阅读的大多数教程都建议您可以使用var test = new Array(4);语法将整数传递给Array构造函数来初始化具有一定长度的数组.

在我的js文件中大量使用这种语法之后,我通过jsLint运行了一个文件,它吓坏了:

错误:第1行字符22处的问题:预期')'而是看到'4'.
var test = new Array(4);
第1行第23个问题:预期';' 而是看到')'.
var test = new Array(4);
第1行字符23处的问题:预期标识符而不是')'.

通过阅读jsLint对其行为的解释后,看起来jsLint并不真正喜欢new Array()语法,而是[]在声明数组时更喜欢.

所以我有几个问题.首先,为什么?我是否因使用new Array()语法而冒任何风险?是否存在我应该注意的浏览器不兼容性?第二,如果我切换到方括号语法,有没有办法声明一个数组并将其长度全部设置在一行,或者我必须做这样的事情:

var test = [];
test.length = 4;
Run Code Online (Sandbox Code Playgroud)

javascript arrays jslint

470
推荐指数
14
解决办法
60万
查看次数

如何使用webpack构建缩小和未压缩的包?

这是我的 webpack.config.js

var webpack = require("webpack");

module.exports = {

  entry: "./entry.js",
  devtool: "source-map",
  output: {
    path: "./dist",
    filename: "bundle.min.js"
  },
  plugins: [
    new webpack.optimize.UglifyJsPlugin({minimize: true})
  ]
};
Run Code Online (Sandbox Code Playgroud)

我正在建设

$ webpack
Run Code Online (Sandbox Code Playgroud)

在我的dist文件夹中,我只是得到了

  • bundle.min.js
  • bundle.min.js.map

我也想看看未压缩的 bundle.js

javascript node.js webpack

220
推荐指数
9
解决办法
19万
查看次数

如何生成随机SHA1哈希以在node.js中用作ID?

我正在使用此行为node.js生成sha1 id:

crypto.createHash('sha1').digest('hex');
Run Code Online (Sandbox Code Playgroud)

问题是它每次都返回相同的id.

是否可以让它每次生成一个随机ID,以便我可以将它用作数据库文档ID?

javascript random sha1 entropy node.js

123
推荐指数
3
解决办法
7万
查看次数

如何在JavaScript中映射/缩小/过滤Set?

有没有办法在JavaScript中使用map/ reduce/ filter/ etc a Set或者我必须自己编写?

这是一些合理的Set.prototype扩展

Set.prototype.map = function map(f) {
  var newSet = new Set();
  for (var v of this.values()) newSet.add(f(v));
  return newSet;
};

Set.prototype.reduce = function(f,initial) {
  var result = initial;
  for (var v of this) result = f(result, v);
  return result;
};

Set.prototype.filter = function filter(f) {
  var newSet = new Set();
  for (var v of this) if(f(v)) newSet.add(v);
  return newSet;
};

Set.prototype.every = function every(f) {
  for (var …
Run Code Online (Sandbox Code Playgroud)

javascript reduce set ecmascript-6

100
推荐指数
3
解决办法
3万
查看次数

ES6:没有new关键字的调用类构造函数

给出一个简单的类

class Foo {
  constructor(x) {
    if (!(this instanceof Foo)) return new Foo(x);
    this.x = x;
  }
  hello() {
    return `hello ${this.x}`;
  }
}
Run Code Online (Sandbox Code Playgroud)

是否可以在没有new关键字的情况下调用类构造函数?

用法应该允许

(new Foo("world")).hello(); // "hello world"
Run Code Online (Sandbox Code Playgroud)

要么

Foo("world").hello();       // "hello world"
Run Code Online (Sandbox Code Playgroud)

但后者失败了

Cannot call a class as a function
Run Code Online (Sandbox Code Playgroud)

javascript constructor instance ecmascript-6

71
推荐指数
7
解决办法
6万
查看次数

如何在Ruby中将字符串拆分为两个具有给定字符的部分?

我们的应用程序是使用Twitter登录的人员挖掘名称.

Twitter在一个字符串中提供全名.

例子

1. "Froederick Frankenstien"
2. "Ludwig Van Beethoven"
3. "Anne Frank"
Run Code Online (Sandbox Code Playgroud)

我想根据找到的第一个(空格)将字符串拆分为两个变量(firstlast)" ".

Example    First Name    Last Name 
1          Froederick    Frankenstein
2          Ludwig        Van Beethoven
3          Anne          Frank
Run Code Online (Sandbox Code Playgroud)

我很熟悉,String#split但我不确定如何只拆分一次.最接受Ruby-Way™(优雅)答案.

ruby string split

62
推荐指数
4
解决办法
3万
查看次数

什么是AMP HTML以及它如何适应框架/工具X?

好的,所以我们大概都听说过Google的AMP HTML.

我很好奇的是它如何适应我们现有的工作流程.如果您正在编写React或Angular应用程序,AMP HTML如何适应开发过程?这些框架中的每一个都已经有了定义组件的方法,看起来AMP只是添加到堆栈中.

我们大多数人已经在使用浏览器或webpack等其他工具.我不太清楚AMP是如何与其他人匹配的.其中一些工具已经允许我们以优化的方式为我们的网站提供服务.AMP HTML将改变这一切多少?

html javascript angularjs reactjs amp-html

56
推荐指数
2
解决办法
8309
查看次数

如何在Python 3中列出一个列表?

我发现以下代码与python2兼容

from itertools import izip_longest
def grouper(n, iterable, padvalue=None):
  "grouper(3, 'abcdefg', 'x') --> ('a','b','c'), ('d','e','f'), ('g','x','x')"
  return izip_longest(*[iter(iterable)]*n, fillvalue=padvalue)
Run Code Online (Sandbox Code Playgroud)

但是,这不适用于Python 3.我收到以下错误

ImportError: cannot import name izip_longest
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

我想将我的列表转换[1,2,3,4,5,6,7,8,9][[1,2,3],[4,5,6],[7,8,9]]

编辑

现在Python3兼容

以下代码根据所选答案进行调整.只需将名称从更改izip_longestzip_longest.

from itertools import zip_longest
def grouper(n, iterable, padvalue=None):
  "grouper(3, 'abcdefg', 'x') --> ('a','b','c'), ('d','e','f'), ('g','x','x')"
  return zip_longest(*[iter(iterable)]*n, fillvalue=padvalue)
Run Code Online (Sandbox Code Playgroud)

python list python-3.x

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

为什么ES6箭头函数中的`throw`无效?

我只是想找出为什么这是无效的原因:

() => throw 42;
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过以下方式绕过它:

() => {throw 42};
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 arrow-functions

27
推荐指数
2
解决办法
3077
查看次数