js 多数元素

leetcode 169.多数元素

思路1

let majorityElement = function(nums) {
 if (nums.length === 1) {
   return nums[0]
 }
 let len = nums.length;
 const map = new Map();
 for (let i = 0; i < nums.length; i++) {
   if (map.has(nums[i])) {
     const temp = map.get(nums[i]) + 1;
     map.set(nums[i], temp);
     if (temp > len / 2) {
       return nums[i];
     }
   } else {
     map.set(nums[i], 1);
   }
 }
}
};

思路2

 let majorityElement = function(nums) {
  let obj = {};
  let length = nums.length;
  if (nums.length === 1) {
    return nums[0]
  }
  for(let i in nums) {
    if(obj[nums[i]]) {
      obj[nums[i]]++;
      if(obj[nums[i]]>length/2){
        return nums[i]
      }
    }else{
      obj[nums[i]] = 1;
    }
  }
### JavaScript数组元素求和的方法 在JavaScript中,可以通过多种方式对数组中的元素进行求和。以下是几种常见的方式及其具体实现: #### 1. 使用 `for` 循环 这是最基础也是最常见的方法之一。通过遍历数组并逐个累加元素来完成求和操作。 ```javascript let arr = [1, 2, 3, 4, 5]; let sum = 0; for (let i = 0; i < arr.length; i++) { sum += arr[i]; } console.log(sum); ``` 这种方法简单直观,适用于大多数场景[^2]。 --- #### 2. 使用 `Array.prototype.some` 虽然 `some` 的主要用途是用来测试数组中是否有至少一个元素满足特定条件,但它也可以被用于简单的求和逻辑。需要注意的是,在这种情况下,通常会将返回值固定为 `false` 来避免提前终止迭代。 ```javascript function one(arr) { let sum = 0; arr.some(function(item) { sum += item; return false; // 防止 some 提前结束 }); return sum; } let arr = [1, 2, 3, 4, 5, 1]; console.log(one(arr)); ``` 这种方式并不推荐作为常规求和手段,但在某些特殊需求下可能有用[^1]。 --- #### 3. 使用 `Array.prototype.reduce` `reduce` 是一种更现代且简洁的方式来处理数组的聚合运算。它接受两个参数:一个是回调函数,另一个是可选的初始值。 ```javascript const arr = [1, 2, 3, 4, 5]; const sum = arr.reduce((accumulator, currentValue) => accumulator + currentValue, 0); console.log(sum); ``` 此方法不仅代码更加紧凑,而且语义清晰,适合绝大多数情况下的数组求和任务[^5]。 --- #### 4. 对多维数组求和 对于嵌套结构或多维数组的情况,可以借助 `flat()` 和 `reduce()` 组合使用,或者直接转换为字符串后再解析。 ##### 方法一:利用 `flat()` 如果知道最大嵌套层数,则可以直接调用 `flat(Infinity)` 展平整个数组。 ```javascript let arr = [1, 2, 3, [[4, 5], 6], 7, 8, 9]; let sum = arr.flat(Infinity).reduce((acc, val) => acc + val, 0); console.log(sum); // 输出 45 ``` ##### 方法二:转化为字符串形式 另一种思路是先把数组转成逗号分隔的形式,然后再逐一相加。 ```javascript let arr = [1, 2, 3, [[4, 5], 6], 7, 8, 9]; let newarr = arr.toString().split(',').reduce((sum, val) => sum + Number(val), 0); console.log(newarr); // 输出 45 ``` 这两种方案各有优劣,前者更适合已知数据结构的情况下使用;后者则更为通用但也稍显复杂[^4]。 --- ### 总结 以上介绍了四种不同的JavaScript数组求和技术——基于传统循环、`some` 函数、`reduce` 聚合以及针对复杂情形设计的扩展技巧。每种都有其适用范围与特点,开发者应根据实际项目需求灵活选用合适的工具。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值