标签: reduce

如何用reduce仅求和具有不同值类型的数组中的数字?

我只需要将这个数组的数字求和,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)

javascript arrays reduce sum ecmascript-6

-1
推荐指数
1
解决办法
453
查看次数

使用reduce()而不是循环填充字典

编辑:我已经更新了我的问题以澄清我的目标。

有没有办法通过使用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)

python reduce

-1
推荐指数
1
解决办法
42
查看次数

Python if else语句不能用于reduce lambda函数

我是新来的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'.

有谁知道这里有什么问题?

python reduce lambda

-2
推荐指数
1
解决办法
2059
查看次数

使用Reduce/Map的一组唯一值的数组数组

我有一个数组数组,需要成为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)

javascript reduce

-2
推荐指数
1
解决办法
80
查看次数

为什么reduce()在乘以大数组时返回NaN

我正在解决 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)
我只得到“NaN”返回。此时我通过 if 跳过了这个错误:

var arraySign = function(nums) {
let product = nums.reduce((acc, curr) => …
Run Code Online (Sandbox Code Playgroud)

javascript arrays reduce multiplication

-2
推荐指数
1
解决办法
92
查看次数

Java 8流 - 每个映射键的数字和列表

是否有一种简单/优雅的方法可以在列表中为地图中的每个键求和数字,例如Map<String, List<BigDecimal>>我希望得到的Map<String, BigDecimal>?我找不到/想出来......

java reduce java-8 java-stream

-4
推荐指数
1
解决办法
699
查看次数