You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅使用for循环与.push()方法拆分含'o'和不含'o'的数组

问题解决:拆分含'o'与不含'o'的名字数组

你的代码逻辑存在两个核心问题:

  1. 对每个名字的每个字符都执行一次push操作,导致单个名字被多次添加到目标数组(比如"octavia"会因多个非'o'字符被反复塞进namesNoO)
  2. 没有判断名字整体是否含'o',只要有一个非'o'字符就把名字放进namesNoO,完全忽略了这个名字可能已经包含'o'的情况

正确实现方式(两种可选)

方式1:使用字符串includes方法(简洁高效)

var names = ['octavia', 'peter', 'olive', 'ava', 'aiden'];
var namesO = [];
var namesNoO = [];

// 遍历数组中的每个名字
for (let i = 0; i < names.length; i++) {
  const currentName = names[i];
  // 判断当前名字是否包含'o',再决定放入哪个数组
  if (currentName.includes('o')) {
    namesO.push(currentName);
  } else {
    namesNoO.push(currentName);
  }
}

console.log(namesO, namesNoO);

方式2:仅用for循环(严格符合"仅允许for循环和.push()"要求)

如果不能使用includes()这类字符串方法,可通过内部循环标记是否存在'o':

var names = ['octavia', 'peter', 'olive', 'ava', 'aiden'];
var namesO = [];
var namesNoO = [];

// 外层循环遍历每个名字
for (let i = 0; i < names.length; i++) {
  const currentName = names[i];
  let hasO = false;

  // 内层循环遍历当前名字的所有字符,检查是否有'o'
  for (let j = 0; j < currentName.length; j++) {
    if (currentName[j] === 'o') {
      hasO = true;
      break; // 找到'o'就停止遍历,避免无意义循环
    }
  }

  // 根据标记结果,将名字放入对应数组
  if (hasO) {
    namesO.push(currentName);
  } else {
    namesNoO.push(currentName);
  }
}

console.log(namesO, namesNoO);

两种方式都能得到你期望的结果:

  • namesO:['octavia', 'olive']
  • namesNoO:['peter', 'ava', 'aiden']

内容的提问来源于stack exchange,提问作者Alvaro Vasquez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 13:19:51