代码之家  ›  专栏  ›  技术社区  ›  four-eyes

检查在map()中创建的数组

  •  0
  • four-eyes  · 技术社区  · 6 年前

    map() 返回一个数组作为结果( resultArr ). 是否可以对“中间”创建的数组执行检查( intermediateArr )在map函数中?在某个地方 必须存储,以便 地图() 函数可以是串联的。有可能进入吗?

    someArr.map(item => {
        let resultArr= [];
        if(!resultArr.includes(item)) {
            resultArr.push(item);
        }
    

    const resultArr = someArr.map(item => {
        if(!intermediateArr.includes(item)) {
            return item
        }
    

    在哪里? 中间耳环 是从 函数,数组,即 结果者

    4 回复  |  直到 6 年前
        1
  •  2
  •   deceze    6 年前

    map 实施。

    但是,您可以使用 reduce 地图 明确地 数组中的每一个元素都转换成另一个值;结果总是与输入具有相同的长度。A 减少 转型 将数组转换为其他数组。

    someArr.reduce((acc, item) => {
        if (!acc.includes(item)) {
            acc.push(item);
        }
        return acc;
    }, [])
    
        2
  •  2
  •   Nina Scholz    6 年前

    为了获得唯一的值,可以使用 Set .

    var array = [1, 2, 3, 1, 2, 4, 5],
        unique = Array.from(new Set(array));
    
    console.log(unique);
        3
  •  0
  •   Nikhil Aggarwal    6 年前

    而不是 map ,您可以简单地使用for循环来访问 中间 已创建数组。

    let someArr = [1,2,4,1,5];
    const resultArr = [];
    for(let item of someArr) {
      if(!resultArr.includes(item)) resultArr.push(item);
    }
    console.log(resultArr);
        4
  •  0
  •   Luca Kiebel    6 年前

    你可以用 Array#reduce((intermediateArr, el) => {}, []) 相反,在哪里 intermediateArr 函数运行时生成的数组。

    例如,如果您想检查每个迭代中的项,可以使用以下方法:

    let someArr = [1,2,2,2,3,3,4,4,5,5,6,7,8,9]
    
    
    let resultArr = someArr.reduce((intermediateArr, item) => {
        if(!intermediateArr.includes(item)) {
            intermediateArr.push(item)
        }
        return intermediateArr;
    }, [])
    
    
    console.log(resultArr.toString())  // 1,2,3,4,5,6,7,8,9