[英]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.