如何在JavaScript二维数组中查找匹配的指定字符串值
原代码逻辑讲解
arr是二维数组,每一个子元素都是长度为2的数组:索引0为分类字符串(posts/likes/comments),索引1为对应存储的对象。- 数组本质是键为数字索引的特殊对象,
filter回调中的({ 1: n })是对象解构语法:把当前遍历到的子数组(作为对象)的键1对应的值,即子数组索引为1的元素,赋值给变量n。 - 原代码的过滤逻辑为:筛选所有子数组中索引为1的元素等于
check值的项。原代码中check = 1,对应子数组索引1的元素都是对象,没有匹配项,最终输出空数组。
匹配字符串的实现代码
你需要匹配子数组索引0的字符串值等于"posts"的项,修改解构的索引和check变量即可:
const arr = [["posts",{text: 'hello'}], ["likes", {text: 'liked'}],["comments", {text: 'commented'}]] const check = "posts"; // 解构子数组索引为0的元素赋值给n,判断是否和check相等 console.log(arr.filter(({ 0: n }) => n === check))
如果觉得对象解构索引的写法不直观,可以改用语义更清晰的数组解构写法:
// 数组解构:子数组第0位赋值给key,第1位赋值给value console.log(arr.filter(([key, value]) => key === check))
上述代码运行后会输出匹配到的子数组:[["posts", {text: 'hello'}]]。
内容的提问来源于stack exchange,提问作者pewZs
相关产品推荐
相关产品推荐

