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

如何在JavaScript矩阵中筛选含特定字符串的子数组并分组

按性别分类矩阵数组的解决方案

问题描述

现有如下格式的矩阵数组:

const chartypes = [
    ["bad boy","masc"],
    ["celebrity","neut"],
    ["activist","neut"],
    ["expert","neut"],
    ["princess","fem"],
    ["manager","neut"]
//, etc.
];

需要按性别规则分类:

  • 生成femtypes数组:包含所有子数组中第二个元素为"neut"或"fem"的完整子数组
  • 生成masctypes数组:包含所有子数组中第二个元素为"neut"或"masc"的完整子数组

预期结果:

femtypes = [
    ["celebrity","neut"],
    ["activist","neut"],
    ["expert","neut"],
    ["princess","fem"],
    ["manager","neut"]   
];

masctypes = [
    ["bad boy","masc"],
    ["activist","neut"],
    ["expert","neut"],
    ["manager","neut"]   
];

尝试过用字符串包含检测,但不知道如何获取对应完整子数组,同时纠结是否应该用带属性的对象替代数组。

解决方案

方法一:直接基于现有数组处理

利用数组的filter方法,直接筛选符合条件的子数组。每个子数组的第二个元素(索引1)就是性别标识,直接判断即可:

const chartypes = [
    ["bad boy","masc"],
    ["celebrity","neut"],
    ["activist","neut"],
    ["expert","neut"],
    ["princess","fem"],
    ["manager","neut"]
];

// 生成femtypes:筛选neut或fem的子数组
const femtypes = chartypes.filter(item => {
    const gender = item[1];
    return gender === "neut" || gender === "fem";
});

// 生成masctypes:筛选neut或masc的子数组
const masctypes = chartypes.filter(item => {
    const gender = item[1];
    return gender === "neut" || gender === "masc";
});

console.log(femtypes);
console.log(masctypes);

filter方法会遍历原数组,返回所有满足条件的完整子数组,完全符合需求。

方法二:改用对象结构优化(可选)

如果后续需求更复杂,比如需要频繁按性别、角色名查询,改用对象结构会更清晰易维护:

// 定义为对象数组
const chartypes = [
    { role: "bad boy", gender: "masc" },
    { role: "celebrity", gender: "neut" },
    { role: "activist", gender: "neut" },
    { role: "expert", gender: "neut" },
    { role: "princess", gender: "fem" },
    { role: "manager", gender: "neut" }
];

// 筛选逻辑更直观
const femtypes = chartypes.filter(item => item.gender === "neut" || item.gender === "fem");
const masctypes = chartypes.filter(item => item.gender === "neut" || item.gender === "masc");

这种方式不需要依赖索引,可读性更强,后续扩展字段(比如添加描述、权重等)也更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 11:10:40