相关疑难解决方法(0)

ES6映射一个对象数组,以返回带有新键的对象数组

我有一个对象数组:

[
    {
        id: 1,
        name: 'bill'
    },
    {
        id: 2,
        name: 'ted'
    }
]
Run Code Online (Sandbox Code Playgroud)

寻找一个简单的单行返回:

[
    {
        value: 1,
        text: 'bill'
    },
    {
        value: 2,
        text: 'ted'
    }
]
Run Code Online (Sandbox Code Playgroud)

因此,我可以使用正确的键轻松地将它们泵入反应下拉列表中.

我觉得这个简单的解决方案应该可行,但我得到的语法错误无效:

this.props.people.map(person => { value: person.id, text: person.name })
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6

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

如何从javascript中的一个线性箭头函数返回匿名对象?

我最近切换到es6并开始在我的代码中使用箭头函数.在重构时我遇到了代码

data.map(function(d) {
   return {id: d.id, selected: bool};
});
Run Code Online (Sandbox Code Playgroud)

我将上面的代码改为此 -

data.map((d) => {id: d.id, selected: bool});
Run Code Online (Sandbox Code Playgroud)

但是我从上面的代码中得到了错误.我不知道这里有什么问题?我知道如果没有代码块,则会有箭头函数提供的隐式返回.

但是不知道如何返回空对象或匿名对象,并初始化了一些属性?

编辑:

如果我这样做会有什么问题?只是出于好奇的缘故.

data.map((d) => new {id: d.id, selected: bool});
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 arrow-functions

37
推荐指数
1
解决办法
9851
查看次数

为什么等待和异步有效的变量名?

我尝试使用/不同的关键字和运算符时如何解释,发现以下语法完全合法:

// awaiting something that isn't a Promise is fine, it's just strange to do:
const foo = await /barbaz/
myFn()
Run Code Online (Sandbox Code Playgroud)

错误:

未捕获的ReferenceError:未定义等待

看起来它尝试将解析await变量名 ..?我期待

等待仅在异步功能中有效

或类似的东西

意外的令牌等待

令我恐惧的是,您甚至可以为其分配以下内容:

const await = 'Wait, this actually works?';
console.log(await);
Run Code Online (Sandbox Code Playgroud)

如若不是如此明显的错误原因语法错误,因为它确实有letfinallybreak,等?为什么允许这样做?第一个代码片段到底发生了什么?

javascript specifications language-design async-await es2017

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

在箭头函数中包含对象文字的括号是什么意思?

我见过这样的JavaScript代码:

let a = () => ({ id: 'abc', name: 'xyz' })
Run Code Online (Sandbox Code Playgroud)

( … )在这种情况下,包装对象的括号引用了什么?这是速记return吗?

javascript ecmascript-6 arrow-functions

24
推荐指数
2
解决办法
3494
查看次数

Vue JS:data(){return {}}与data :()=>({})的区别

我很好奇这两个数据函数,这两者之间有什么区别.

我经常看到的是

data () {
  return {
    obj
  }
}
Run Code Online (Sandbox Code Playgroud)

和我通常使用的ES6"胖箭"

data:()=>({
  obj
})
Run Code Online (Sandbox Code Playgroud)

javascript vue.js vuejs2

13
推荐指数
1
解决办法
6543
查看次数

从箭头函数返回对象

我想从箭头函数(以简短的形式)输出对象,所以完整的代码是:

somemethod(function(item) {
   return {id: item.id};
})
Run Code Online (Sandbox Code Playgroud)

使用箭头函数是:

somemethod((item) => {
   return {id: item.id};
})
Run Code Online (Sandbox Code Playgroud)

现在简短的形式应该是这样的:

somemethod(item = > {id: item.id} )
Run Code Online (Sandbox Code Playgroud)

那个不起作用,还有这个:

somemethod(item = > {{id: item.id}} )
Run Code Online (Sandbox Code Playgroud)

我目前找到的唯一解决方案是使用创建对象表示法:

somemethod(item = > new Object({id: item.id}) )
Run Code Online (Sandbox Code Playgroud)

还有别的办法吗?

javascript ecmascript-6

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

javascript对象文字动态键SyntaxError

这个表达有什么问题?

['a', 'b'].map((x) => {[x]:x})
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

Uncaught SyntaxError: Unexpected token :
Run Code Online (Sandbox Code Playgroud)

javascript syntax object

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

映射到 lambda 函数 JavaScript 中的对象 - 为什么没有括号就不能工作?

我正在节点中运行以下命令,但无法理解为什么一个有效而另一个无效。这里我有一个数组 s,其中 s = [1, 2, 3, 4]。我想将每个数字映射到一个对象。我已经尝试这个很长时间了:

s.map(i => {name: i})
Run Code Online (Sandbox Code Playgroud)

它返回一个未定义的列表。

最后我意识到它与括号一起工作:

s.map(i => ({name: i}))
Run Code Online (Sandbox Code Playgroud)

这提供了我想要的输出:[ { name: 1 }, { name: 2 }, { name: 3 }, { name: 4 } ]

我觉得有一个 JavaScript 概念我不理解。为什么这不起作用?

javascript arrays object ecmascript-6

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

箭头函数返回的对象中出现"意外令牌"语法错误

这是有问题的代码:

const data =
  results.responses.map((response, idx) =>
    { id: idx+1,
      name: response.name,
      email: response.email,
      comment: response.comment
    }
  )
Run Code Online (Sandbox Code Playgroud)

我正在使用babel将es6代码翻译为javascript.这是错误消息:

Module build failed: SyntaxError: /Users/antkong/dev/project/form.js: Unexpected token (60:14)
  58 |       results.responses.map((response, idx) =>
  59 |         { id: idx+1,
> 60 |           name: response.name,
     |               ^
  61 |           email: response.email,
  62 |           comment: response.comment
  63 |         }
Run Code Online (Sandbox Code Playgroud)

为什么会出现语法错误?

javascript ecmascript-6

5
推荐指数
1
解决办法
2248
查看次数

如何在不重新绑定此对象的情况下返回带有粗箭头功能的对象?

我有一个简单的函数(在React组件中):

getInitialState: function() {
  return {
    text: this.props.text
  }
}
Run Code Online (Sandbox Code Playgroud)

但我想用箭来形容它:

getInitialState: () => {
    text: this.props.text
}
Run Code Online (Sandbox Code Playgroud)

除非出现错误,因为{粗箭头后的a表示返回未定义的代码块(除非您明确地进行return了操作)。至少那是我最初的想法。但是我认为this现在已经绑定到那个胖箭头功能this.props上了undefined

所以我尝试这样:

getInitialState: () => new Object({
    text: this.props.text
})
Run Code Online (Sandbox Code Playgroud)

但是我得到同样的错误,this.props是不确定的。

所以我想我有两个很好奇的问题。首先,从简单的语句胖箭头函数返回对象的惯用方式是什么?其次,如何返回引用this周围环境的对象的对象?

javascript this ecmascript-6 arrow-functions

5
推荐指数
1
解决办法
607
查看次数