gpt4 book ai didi

JavaScript 内联函数到数组映射

转载 作者:行者123 更新时间:2023-12-04 20:19:40 25 4
gpt4 key购买 nike

是否可以使用带有 javascript map 函数的内联返回?而不是做

array.map(token => { var x=new Object(); x[token]=words[token]; return x;} )

我想像这样做一样内联

array.map(token => token )

所以应用像这样的内联方法

array.map(token => inline_function(token) )

我试过

Object.keys(chart).sort((a,b) => words[b]-words[a]).map(token => ( (token) => (new Object())[token]=words[token] )(token) )

但无法使用带有 () 的匿名调用获得返回值。

这是一个使用非内联大小写的例子:

text = "Lorem ipsum dolor sit amet,\n consectetur adipiscing elit,\nsed do eiusmod tempor incididunt\nut labore et dolore magna aliqua.\nUt enim ad minim veniam,\nquis nostrud exercitation ullamco laboris nisi\nut aliquip ex ea commodo consequat.\nDuis aute irure dolor in reprehenderit in voluptate velit esse\ncillum dolore eu fugiat nulla pariatur.\nExcepteur sint occaecat cupidatat non proident,\nLorem ipsum dolor sit amet etwas,\nsunt in culpa qui officia deserunt mollit anim id est laborum"

words = text.split(/\s+/g)

count = words.reduce(function(m, v) {
m[v] = m[v] ? m[v] + 1 : 1;
return m;
}, {})

sorted = Object.keys(count).sort((a, b) => count[b] - count[a]).map(token => {
var x = new Object();
x[token] = count[token];
return x;
})

console.log(sorted)

最佳答案

所有这些都是内联 函数。从根本上说,您是在询问如何编写此回调:

token => {
var x = new Object();
x[token] = count[token];
return x;
}

具有简洁的主体,而不是功能主体。在这种特定情况下,您可以使用计算的属性名称:

token => ({[token]: count[token]})
// ^^^^^^^---- computed property name, new in ES2015

请注意,我们需要括号 (()) 围绕简洁主体,因为它的第一个字符将是 {(对象初始化程序的开头),否则,会使解析器认为它有一个函数体而不是一个简洁的函数体。

在更一般的情况下,除非所有内容都适合单个表达式,例如上面的对象初始值设定项,否则您不能将函数体变成简洁的函数体。有时您可以为此使用(或者可以说滥用)逗号运算符,左侧操作数为 , 有副作用,但在这种情况下通常更清楚只保留函数体。

作为该(滥用)使用的示例,这会在将它们加倍之前记录值:

doubled = values.map(v => (console.log(v), v * 2));

我不推荐它,但你会看到它完成的。 :-)

关于JavaScript 内联函数到数组映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53264233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com