当前位置: 首页 > 知识库问答 >
问题:

javascript - js遍历的一个问题?

荆弘伟
2024-04-28

dataList是一个数组,我想遍历找到返回条件的数据,我下面写的为什么不行?

const getParentIdTxt = (parentid) => {  if (parentid === null) {    return '无'  }  dataList.value.map((m) => {    if (m.id === parentid) {      console.log(m.meta.title)      return m.meta.title    }  })}

但改成下面的就可以:

const getParentIdTxt = (parentid) => {  if (parentid === null) {    return '无'  }  const okItem = dataList.value.find((m) => m.id === parentid)  if (okItem) {    return okItem.meta.title  }  return '未找到'}

共有3个答案

曾沛
2024-04-28

这位仁兄什么水平啊,最基本的map用法都不知道,如果是学生有情可原,如果是已经参加工作的还问这种问题,未免有点太lou了

柳宾实
2024-04-28
// mapconst arr = ["1", "2"]const arr1 = arr.map((item) => {    // 做一些转换,比如拼接一个 _test    return item + "_test"})// 相当于const arr = ["1", "2"]const arr1 = []for (let i = 0; i < arr.length; i++) {    arr1.push(arr[i] + "_test")}

要找到返回条件的数据,可以用 filter

const arr = ["1", "2"]const arr1 = arr.filter((item) => item === "2")

相当于

const arr = ["1", "2"]const arr1 = []for (let i = 0; i < arr.length; i++) {    if (arr[i] === "2") {        arr1.push(arr[i])    }}
石喜
2024-04-28

你的第一个函数使用 map 方法来遍历 dataList.value,但 map 方法并不返回匹配项,而是返回一个新的数组,该数组中的每个元素都是原始数组中的元素经过一个函数处理后的结果。在你的代码中,你并没有处理那些不匹配 m.id === parentid 的元素,所以你得到的新数组将包含原始数组中的所有元素,并且没有任何更改。

此外,你的 map 函数内部没有 return 语句,所以它会返回 undefined,这也会成为新数组的元素。

而你的第二个函数使用了 find 方法,它会返回数组中第一个满足测试函数的元素。如果没有找到满足条件的元素,它会返回 undefined。在你的代码中,你首先检查 okItem 是否存在,如果存在,就返回它的 meta.title,否则返回 '未找到'。

所以,如果你想使用 map 方法来达到你想要的效果,你可以修改你的代码如下:

const getParentIdTxt = (parentid) => {  if (parentid === null) {    return '无'  }  const result = dataList.value.map((m) => {    if (m.id === parentid) {      console.log(m.meta.title)      return m.meta.title    }    return null;  // 对于不匹配的元素,返回null或其他占位符  }).filter(Boolean);  // 使用filter方法移除null或占位符  return result.length > 0 ? result[0] : '未找到';  // 如果找到匹配项,返回第一个,否则返回'未找到'}

但请注意,这种使用 map 的方式并不常见,因为 map 的主要目的是将数组中的每个元素转换为一个新的值,而不是查找满足特定条件的元素。在这种情况下,使用 find 方法是更合适的选择。

 类似资料:
  • 下面的数组,不确定有多少数,每层可能还有child,我怎么递归遍历修改所有的数组内容?

  • 本文向大家介绍js遍历map javaScript遍历map的简单实现,包括了js遍历map javaScript遍历map的简单实现的使用技巧和注意事项,需要的朋友参考一下 js遍历map javaScript遍历map的简单实现 这样会把map给遍历掉,显示在浏览器上的控制器里。 以上这篇js遍历map javaScript遍历map的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参

  • 如图所示大的div固定在第一个,其中1234div是for循环出来的,这种布局能实现吗?或者有没有更好的方案

  • 不是应该为['xiaomings',300]吗?

  • 我想匹配一段字符串中所有的input 并使用replace进行替换,如果input里面有类似data-* 这种自定义属性的就跳过 不知道这种正则该怎么写,我也阅读了文档并使用google。都没找到 比如 <input type='text' /> 这种Input就匹配,<input data-xxx /> 带有自定义属性的input 正则则不匹配

  • 本文向大家介绍JavaScript中的图遍历,包括了JavaScript中的图遍历的使用技巧和注意事项,需要的朋友参考一下 图遍历(也称为图搜索)是指访问(检查和/或更新)图中每个顶点的过程。此类遍历按访问顶点的顺序分类。