标签: ecmascript-7

克隆除一个键之外的js对象

我有一个扁平的JS对象:

{a: 1, b: 2, c: 3, ..., z:26}
Run Code Online (Sandbox Code Playgroud)

我想克隆除一个元素之外的对象:

{a: 1, c: 3, ..., z:26}
Run Code Online (Sandbox Code Playgroud)

最简单的方法是什么(如果可能,最好使用es6/7)?

javascript ecmascript-harmony ecmascript-6 ecmascript-7

237
推荐指数
16
解决办法
13万
查看次数

IE11 - 对象不支持属性或方法'includes' - javascript window.location.hash

我正在检查网址,看它是否包含或包含?在其中控制窗口中的哈希弹出状态.所有其他浏览器只有IE的问题.

当我尝试以这种方式加载时,调试器给我这个错误Object不支持属性或方法'includes'

当我通过popstate加载页面时,我没有收到任何错误

    $(document).ready(function(e) {
        if(window.location.hash) {
            var hash;
            if(window.location.hash.includes("?")) {
                alert('I have a ?');
                hash = window.location.hash.substring(window.location.hash.indexOf('#') + 0,window.location.hash.indexOf('?'));
            }else {
                hash = window.location.hash;
            };
            if (hash=="#DRS" || hash=="#DRP" || hash=="#DFFI" || hash=="#DCI" || hash=="#DCP" || hash=="#DRP" || hash=="#DRMA" || hash=="#EICS" || hash=="#ORG"){
                $(hash+'Content').addClass('pageOn').removeClass('pageOff');
            }else {
                $('#homeContent').addClass('pageOn').removeClass('pageOff');
            };
        } else {
            $('#homeContent').addClass('pageOn').removeClass('pageOff');
        }
        $(window).on('popstate', function() {
            var hash;
            if(window.location.hash.includes("?")) {
                hash = window.location.hash.substring(window.location.hash.indexOf('#') + 0,window.location.hash.indexOf('?'));
            }else {
                hash = window.location.hash;
            };
            if (hash=="#DRS" || hash=="#DRP" || hash=="#DFFI" || hash=="#DCI" …
Run Code Online (Sandbox Code Playgroud)

javascript internet-explorer-11 ecmascript-7

168
推荐指数
5
解决办法
13万
查看次数

为什么Math.pow()(有时)在JavaScript中不等于**?

我刚刚发现ECMAScript 7功能a**b作为Math.pow(a,b)(MDN参考)的替代方案,并且在该帖子中遇到了一个讨论,其中他们显然表现不同.我在Chrome 55中测试了它,可以确认结果有所不同.

Math.pow(99,99) 回报 3.697296376497263e+197

99**99 回报 3.697296376497268e+197

因此记录差异会Math.pow(99,99) - 99**99导致-5.311379928167671e+182.

到目前为止可以说,它只是另一种实现,但将它包装在一个函数中的行为又有所不同:

function diff(x) {
  return Math.pow(x,x) - x**x;
}
Run Code Online (Sandbox Code Playgroud)

调用diff(99)返回0.

为什么会这样?

正如xszaboj指出的那样,这可以缩小到这个问题:

var x = 99;
x**x - 99**99; // Returns -5.311379928167671e+182
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome v8 ecmascript-7

114
推荐指数
1
解决办法
7766
查看次数

Array.prototype.includes与Array.prototype.indexOf

除了提高可读性之外,还有什么优势可以includes结束indexOf?他们看起来和我一模一样.

这有什么区别

var x = [1,2,3].indexOf(1) > -1; //true
Run Code Online (Sandbox Code Playgroud)

还有这个?

var y = [1,2,3].includes(1); //true
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-7

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

如何在Rx Observable上"等待"?

我希望能够等待一个可观察的,例如

const source = Rx.Observable.create(/* ... */)
//...
await source;
Run Code Online (Sandbox Code Playgroud)

天真的尝试会导致等待立即解决而不会阻止执行

编辑:我的完整用途的伪代码是:

if (condition) {
  await observable;
}
// a bunch of other code
Run Code Online (Sandbox Code Playgroud)

我知道我可以将其他代码移动到另一个单独的函数并将其传递给subscribe回调,但我希望能够避免这种情况.

javascript rxjs ecmascript-7

83
推荐指数
6
解决办法
4万
查看次数

即不支持'包括'方法

我一直在研究一个项目并开发一个JavaScript框架.原始代码大约是700行,所以我只粘贴了这一行.include方法在Internet Explorer上不起作用.这有什么解决方案吗?

var row_cells = tbl_row.match(/<td[\s\S]*?<\/td>/g);

    row.Cells = new Array();
    if (onRowBindFuncText != null) { /*Fonksyon tan?mlanma??sa daha h?zl? çal??*/

        var cellCount = 0;
        for (i = 0; i < row_cells.length; i++) {

            var cell = new Cell();
            $.each(this, function (k, v) {

                if ((row_cells[i]+"").includes("#Eval(" + k + ")")) {

                    cell.Keys.push(new Key(k,v));
Run Code Online (Sandbox Code Playgroud)

......代码还在继续

javascript internet-explorer ecmascript-7

46
推荐指数
4
解决办法
5万
查看次数

与ES7反应:未捕获的TypeError:无法读取未定义的属性"state"

我收到此错误Uncaught TypeError:每当我在AuthorForm的输入框中输入任何内容时,都无法读取未定义的属性'state'.我正在使用React和ES7.

在ManageAuthorPage中的setAuthorState函数的第3行发生错误.即使我在setAuthorState中放置了console.log(this.state.author),它也会停在console.log并调出错误.

无法通过互联网找到其他人的类似问题.

这是ManageAuthorPage代码:

import React, { Component } from 'react';
import AuthorForm from './authorForm';

class ManageAuthorPage extends Component {
  state = {
    author: { id: '', firstName: '', lastName: '' }
  };

  setAuthorState(event) {
    let field = event.target.name;
    let value = event.target.value;
    this.state.author[field] = value;
    return this.setState({author: this.state.author});
  };

  render() {
    return (
      <AuthorForm
        author={this.state.author}
        onChange={this.setAuthorState}
      />
    );
  }
}

export default ManageAuthorPage 
Run Code Online (Sandbox Code Playgroud)

这是AuthorForm代码:

import React, { Component } …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 reactjs ecmascript-7

39
推荐指数
2
解决办法
7万
查看次数

VSCode Linter ES6 ES7 Babel linter

如何使用Visual Studio代码根据babel/ES7 stage-0规则lint JavaScript文件?

我只需要lint代码.我已经有webpack转换Js文件了.

javascript eslint babeljs ecmascript-7 visual-studio-code

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

ES6/ES7中"可选"对象键的简洁/简洁语法?

ES6/ES7 中已经有很多很酷的功能来定义Javascript对象.但是,以下模式在Javascript中很常见:

const obj = { 
  requiredKey1: ..., 
  requiredKey2: ... 
};

if (someCondition) { 
  obj.optionalKey1 = ...;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法用可选键和必需键同时定义对象?

javascript ecmascript-6 ecmascript-7 ecmascript-next

29
推荐指数
2
解决办法
7472
查看次数

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