我想比较两个阵列......理想情况下,有效率.没有什么花哨的,只要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中使用数组(包括w3schools和devguru)阅读的大多数教程都建议您可以使用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) 这是我的 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.jsbundle.min.js.map我也想看看未压缩的 bundle.js
我正在使用此行为node.js生成sha1 id:
crypto.createHash('sha1').digest('hex');
Run Code Online (Sandbox Code Playgroud)
问题是它每次都返回相同的id.
是否可以让它每次生成一个随机ID,以便我可以将它用作数据库文档ID?
有没有办法在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) 给出一个简单的类
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) 我们的应用程序是使用Twitter登录的人员挖掘名称.
Twitter在一个字符串中提供全名.
例子
1. "Froederick Frankenstien"
2. "Ludwig Van Beethoven"
3. "Anne Frank"
Run Code Online (Sandbox Code Playgroud)
我想根据找到的第一个(空格)将字符串拆分为两个变量(first和last)" ".
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™(优雅)答案.
好的,所以我们大概都听说过Google的AMP HTML.
我很好奇的是它如何适应我们现有的工作流程.如果您正在编写React或Angular应用程序,AMP HTML如何适应开发过程?这些框架中的每一个都已经有了定义组件的方法,看起来AMP只是添加到堆栈中.
我们大多数人已经在使用浏览器或webpack等其他工具.我不太清楚AMP是如何与其他人匹配的.其中一些工具已经允许我们以优化的方式为我们的网站提供服务.AMP HTML将改变这一切多少?
我发现以下代码与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]]
以下代码根据所选答案进行调整.只需将名称从更改izip_longest为zip_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) 我只是想找出为什么这是无效的原因:
() => throw 42;
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过以下方式绕过它:
() => {throw 42};
Run Code Online (Sandbox Code Playgroud)