我只需要将这个数组的数字求和,reduce但是我不知道怎么做。
这是我的代码和尝试:
let arr = [1,2,3,4,6,true,"Dio Brando", false,10,"yare yare"];
let sum = arr.reduce((a.b)=> typeOf.a =="number" && typeOf.b =="number"? a+b :false)
console.log(sum);
Run Code Online (Sandbox Code Playgroud) 编辑:我已经更新了我的问题以澄清我的目标。
有没有办法通过使用reduce()或其他一些快速方法而不是for循环来加速这段代码?我查看了很多类似的问题,但没有找到答案。
old_dict = {'a': 1, 'b': 2, 'c': 3}
keys = ['a', 'c', 'd']
new_dict = {}
for key in keys:
new_dict[key] = old_dict.get(key)
print(new_dict)
# prints:
# {'a': 1, 'c': 3, 'd': None}
Run Code Online (Sandbox Code Playgroud) 我是新来的lambda,并reduce在Python,我不明白为什么这个功能不工作:
def my_func(str):
symbols = ['_', '-']
return reduce(lambda x, y: ' ' + y if x in symbols else x + y, str)
my_func('foo_bar-baz') # 'foo_bar-baz'
Run Code Online (Sandbox Code Playgroud)
我期待输出'foo bar baz'.
有谁知道这里有什么问题?
我有一个数组数组,需要成为1个唯一值数组.
[1, 3, 2], [5, 2, 1, 4], [2, 1]
Run Code Online (Sandbox Code Playgroud)
我想使用reduce/map来解决问题,但它似乎没有用.我已经用嵌套for循环解决了这个问题,如下所示:
function uniteUnique(arr) {
var args = Array.from(arguments);
var arr = [];
for (var i = 0; i < args.length; i++) {
for (var j = 0; j < args[i].length; j++) {
if (!arr.includes(args[i][j])) {
arr.push(args[i][j]);
}
}
}
return arr;
}
Run Code Online (Sandbox Code Playgroud)
现在我尝试使用reduce/map解决问题,但没有得到正确的解决方案,如下所示:
function uniteUnique(arr) {
var args = Array.from(arguments);
return args.reduce(
(arr, a) => a.map(n => (!arr.includes(n) ? arr.push(n) : n)),
[]
);
}
console.log(uniteUnique([1, 3, 2], [5, 2, …Run Code Online (Sandbox Code Playgroud) 我正在解决 leetcode 的问题 1822,但我坚持使用返回 NaN 的 reduce() 。
有一个函数 signFunc(x) 返回:
如果 x 为正,则为 1。如果 x 为负数,则为 -1。如果 x 等于 0,则为 0。您将获得一个整数数组 nums。令 Product 为数组 nums 中所有值的乘积。
返回signFunc(产品)。
我尝试的解决方案:
var arraySign = function(nums) {return Math.sign(nums.reduce((acc, curr) => acc * curr));};
console.log(arraySign([1,5,0,2,-3]));Run Code Online (Sandbox Code Playgroud)
当我传递像 [1,5,0,2,-3] 这样的简单数组时,一切都很好,但是当我传递像这样的怪物时
[1,28,-91,-62,-36,-1,-84,-90,-92,61,6,-58,-60,2,51,-15,-18,-81,87 ,84,100,-84,-13,-87,-33,72,-72,-59,-79,28,-69,-97,-93,17,67,11,-12,19,5, 42,-85,71,-77,-82,26,-58,-51,-14,63,-85,-86,66,47,57,-86,-25,-75,59,- 17,-71,89,-78,-42,30,39,61,-96,-30,-29,-92,-90,69,20,65,32,92,44,-71,- 18,87,-86,23,-96,-21,-49,-96,-98,35,-11,-1,81,-48,68,5,75,57,-30,-7 ,32,86,-29,-86,-61,45,-31,-93,-26,-9,86,57,-52,75,68,-58,14,27,-94,47 ,-38,-44,75,-83,21,-83,43,62,74,97,78,43,54,28,64,-19,-89,88,68,18,-96, -83,-25,-71,88,-84,-24,-61,72,-90,-56,29,46,56,51,16,66,-2,65,-95,16, 51,42,61,99,89,-93,59,-99,69,26,-61,21,41,40,-4,-49,3,-96,57,65,72,-41 ,-77,-4,61,71,-88,21,-95,38,64,92,0,-63]
var arraySign = function(nums) {return Math.sign(nums.reduce((acc, curr) => acc * curr));};
console.log(arraySign([1,28,-91,-62,-36,-1,-84,-90,-92,61,6,-58,-60,2,51,-15,-18,-81,87,84,100,-84,-13,-87,-33,72,-72,-59,-79,28,-69,-97,-93,17,67,11,-12,19,5,42,-85,71,-77,-82,26,-58,-51,-14,63,-85,-86,66,47,57,-86,-25,-75,59,-17,-71,89,-78,-42,30,39,61,-96,-30,-29,-92,-90,69,20,65,32,92,44,-71,-18,87,-86,23,-96,-21,-49,-96,-98,35,-11,-1,81,-48,68,5,75,57,-30,-7,32,86,-29,-86,-61,45,-31,-93,-26,-9,86,57,-52,75,68,-58,14,27,-94,47,-38,-44,75,-83,21,-83,43,62,74,97,78,43,54,28,64,-19,-89,88,68,18,-96,-83,-25,-71,88,-84,-24,-61,72,-90,-56,29,46,56,51,16,66,-2,65,-95,16,51,42,61,99,89,-93,59,-99,69,26,-61,21,41,40,-4,-49,3,-96,57,65,72,-41,-77,-4,61,71,-88,21,-95,38,64,92,0,-63]));Run Code Online (Sandbox Code Playgroud)
var arraySign = function(nums) {
let product = nums.reduce((acc, curr) => …Run Code Online (Sandbox Code Playgroud) 是否有一种简单/优雅的方法可以在列表中为地图中的每个键求和数字,例如Map<String, List<BigDecimal>>我希望得到的Map<String, BigDecimal>?我找不到/想出来......
reduce ×6
javascript ×3
arrays ×2
python ×2
ecmascript-6 ×1
java ×1
java-8 ×1
java-stream ×1
lambda ×1
sum ×1