从数据库获取字符串数组后如何为元素赋特定值并计算总和
实现思路
这个需求的核心逻辑非常简单,有两种实现路径可以选:
- 最优方案:因为每个元素对应的固定值都是
0.5,总和直接等于数组长度 × 0.5,不需要做遍历转换,性能最高,适合任意长度的数组。 - 常规方案:如果后续需要用到转换后的数值数组,可以先对原数组做映射转换,再对转换后的数组求和。
不同语言实现示例
JavaScript
const originalAry = ["a","a", "a", "a"] // 最优方案:直接计算总和 const sum = originalAry.length * 0.5 // 输出2.0 // 常规方案:生成转换后的数组再求和 const convertedAry = originalAry.map(() => 0.5) // 输出 [0.5, 0.5, 0.5, 0.5] const sumFromConverted = convertedAry.reduce((prev, curr) => prev + curr, 0) // 输出2.0
如果只有值为a的元素才赋值0.5,其他值需要特殊处理,可加判断逻辑:
const sum = originalAry.reduce((total, item) => { return item === 'a' ? total + 0.5 : total }, 0)
Python
original_ary = ["a","a", "a", "a"] # 最优方案:直接计算总和 sum_val = len(original_ary) * 0.5 # 输出2.0 # 常规方案:生成转换后的数组再求和 converted_ary = [0.5 for _ in original_ary] # 输出 [0.5, 0.5, 0.5, 0.5] sum_val = sum(converted_ary) # 输出2.0
Java
import java.util.Arrays; import java.util.List; public class CalculateSum { public static void main(String[] args) { List<String> originalAry = Arrays.asList("a","a","a","a"); // 最优方案:直接计算总和 double sum = originalAry.size() * 0.5; // 输出2.0 // 常规方案:生成转换后的数组 double[] convertedAry = new double[originalAry.size()]; Arrays.fill(convertedAry, 0.5); // 输出 [0.5, 0.5, 0.5, 0.5] double sumFromConverted = Arrays.stream(convertedAry).sum(); // 输出2.0 } }
内容的提问来源于stack exchange,提问作者user9769384
相关产品推荐
相关产品推荐

