繁体   English   中英

如何在矩阵/数组中搜索包含特定字符串的子数组 (Javascript)

[英]How to search a matrix/array for a subarray containing a specific string (Javascript)

我有一个这样的矩阵:

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

由于各种复杂的原因,我想按性别对这个数组进行排序。 因此,创建一个新数组,其中包含所有包含字符串“neut”/“fem”的子数组,以及另一个包含所有包含“neut”/“masc”字符串的子数组的新数组。

它应该导致类似的结果:

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

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

但是,我不确定如何对此进行 go,因为我想返回整个子数组,而不仅仅是字符串“neut”本身。 有没有办法做到这一点,还是我做错了? 对于 arrays,这甚至可能吗?还是我应该将整个内容写成具有可搜索属性的 object?

我觉得必须使用.contains("fem") ||.contains("neut")进行某种搜索,这应该让我至少检测到字符串的存在,但随后如何 go 关于套索子数组该字符串存在于仍然是一个谜。

一直在努力寻找这个答案,但事实证明它出人意料地难以捉摸——也许我忽略了一些明显的东西?

我感谢您的经验和智慧可以提供的任何见解。 谢谢你。

我们可以使用“过滤器”制作您期望的数据集。

 const chartypes = [ ["bad boy","masc"], ["celebrity","neut"], ["activist","neut"], ["expert","neut"], ["princess","fem"], ["manager","neut"] //, etc. ]; femtypes = chartypes.filter((x) => { return x[1] === "fem" || x[1] === "neut"; }); masctypes = chartypes.filter((x) => { return x[1] === "masc" || x[1] === "neut"; }); console.log(femtypes); console.log(masctypes);

如果你想对数据集进行排序,就像下面那样。

console.log(femtypes.sort((a, b) => a[0].localeCompare(b[0])));  // first key sort asc 
console.log(femtypes.sort((a, b) => b[0].localeCompare(a[0])));  // first key sort desc
console.log(femtypes.sort((a, b) => a[1].localeCompare(b[1]) || a[0].localeCompare(b[0]))); 
                                                         // second key asc, first key asc

// ["activist", "neut"], ["celebrity", "neut"], ["expert", "neut"], ["manager", "neut"], ["princess", "fem"]]
// [["princess", "fem"], ["manager", "neut"], ["expert", "neut"], ["celebrity", "neut"], ["activist", "neut"]]
// [["princess", "fem"], ["activist", "neut"], ["celebrity", "neut"], ["expert", "neut"], ["manager", "neut"]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM