如果与给定的数字匹配,则将数组中的数字相乘
Posted
技术标签:
【中文标题】如果与给定的数字匹配,则将数组中的数字相乘【英文标题】:multiply the number in the array if it matches the given one 【发布时间】:2021-08-04 15:32:39 【问题描述】:我有一个这样的数组,如果是3,我需要乘以一个数字,但最后reduce消除了所有等于3的数字,并将其余的相乘。我该如何解决这个问题?
let arr = [2, 4, 3, 1, 4, 3, 1, 3, 10, 4, 2, 13]
let aaa = arr.reduce([]) $1 == 3 ? $0 : $0 + [$1 * 5]
//[10, 20, 5, 20, 5, 50, 20, 10, 65]
//[2,4,15,1,4,15,1,15,10,4,2,13] need this
【问题讨论】:
你应该使用地图。 【参考方案1】:你应该使用 map 而不是 reduce
let arr = [2, 4, 3, 1, 4, 3, 1, 3, 10, 4, 2, 13]
let result = arr.map $0 == 3 ? 15 : $0
// [2, 4, 15, 1, 4, 15, 1, 15, 10, 4, 2, 13
或者如果它应该适用于 3 的任何倍数
let result = arr.map $0.isMultiple(of: 3) ? $0 * 5 : $0
【讨论】:
实际上它说“乘以一个数字如果它是 3”所以我认为它只是 3 这意味着你实际上可以直接返回 15... 这是真的,@JoakimDanielson,只是习惯了这么多问题是多个(的:)。我已经更新了我的答案。以上是关于如果与给定的数字匹配,则将数组中的数字相乘的主要内容,如果未能解决你的问题,请参考以下文章
假设某个元素与 R 中的 CSV 文件的文件名相同,则将数据框中的某个元素相乘
Leetcode练习(Python):数组类:第31题:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列