我有一个对象数组:
[
{
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) 我最近切换到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) 我尝试使用/不同的关键字和运算符时如何解释,发现以下语法完全合法:
// 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)
如若不是如此明显的错误原因语法错误,因为它确实有let,finally,break,等?为什么允许这样做?第一个代码片段到底发生了什么?
javascript specifications language-design async-await es2017
我见过这样的JavaScript代码:
let a = () => ({ id: 'abc', name: 'xyz' })
Run Code Online (Sandbox Code Playgroud)
( … )在这种情况下,包装对象的括号引用了什么?这是速记return吗?
我很好奇这两个数据函数,这两者之间有什么区别.
我经常看到的是
data () {
return {
obj
}
}
Run Code Online (Sandbox Code Playgroud)
和我通常使用的ES6"胖箭"
data:()=>({
obj
})
Run Code Online (Sandbox Code Playgroud) 我想从箭头函数(以简短的形式)输出对象,所以完整的代码是:
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)
还有别的办法吗?
这个表达有什么问题?
['a', 'b'].map((x) => {[x]:x})
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
Uncaught SyntaxError: Unexpected token :
Run Code Online (Sandbox Code Playgroud) 我正在节点中运行以下命令,但无法理解为什么一个有效而另一个无效。这里我有一个数组 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 概念我不理解。为什么这不起作用?
这是有问题的代码:
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)
为什么会出现语法错误?
我有一个简单的函数(在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 ×10
ecmascript-6 ×7
object ×2
arrays ×1
async-await ×1
es2017 ×1
syntax ×1
this ×1
vue.js ×1
vuejs2 ×1