繁体   English   中英

(JavaScript,Redux)为什么我的嵌套数组在返回时被删除,但是当我不返回时却没有?

[英](JavaScript, Redux) Why are my nested array's getting deleted when returning, however when I don't return it doesn't?

What I'm trying to do is take an array I am getting from an api, and cutting it down to smaller arrays of 4 elements maximum in each of the smaller arrays and store them in my redux store.

这是我如何调用 function:

const newArray = res.data.Search
let list = paginate(newArray)
console.log(list)
dispatch({ type: FETCH_SEARCH_SUCCESS, payload: list });

这是我在数组中发送的内容:

[{Title: "The Avengers", Year: "2012"}, 
{Title: "Avengers: Infinity War", Year: "2018"}, 
{Title: "Avengers: Endgame", Year: "2019"}, 
{Title: "Avengers: Age of Ultron", Year: "2015"}, 
{Title: "The Avengers", Year: "1998"}, 
{Title: "The Avengers: Earth's Mightiest Heroes", Year: "2010–2012"},  
{Title: "Ultimate Avengers II", Year: "2006"}, 
{Title: "The Avengers", Year: "1961–1969"}, 
{Title: "Avengers Assemble", Year: "2012–2019"},
{Title: "Ultimate Avengers: The Movie", Year: "2006"}]

这是这个问题的代码块:

const paginate = (arr) => {
  const mr = 4;
  let pn = 0;
  let results = []

  // calculate max number of pages user can go through (if its only 4 results or less it will just return the array as is)
  if(arr.length < mr){
    return arr
  }else {
    const maxPages = Math.ceil(arr.length/mr)
    // will make a nested array from every 4 indexes of arr, and put it inside of the results array
    for(let i = 0; i < maxPages; i++){
      results[i] = arr.slice(mr*pn, mr*pn+mr)
      pn+=1
    }
    console.log(results)
    //return results
  }
}

当我不使用return results时,这就是我的 console.logs 中返回的内容在此处输入图像描述

这就是我使用return results 在此处输入图像描述

我认为这里的问题不在于分页 function。 我猜这是一个渲染问题,当您返回结果时,您可能会触发 function 以不同的参数再次调用。 我建议检查您每次传递的参数以及 output 是什么。 您能否提供更多关于 arguments 的信息来重新创建问题?

 const paginate = (arr) => { const mr = 4; let pn = 0; let results = [] // calculate max number of pages user can go through (if its only 4 results or less it will just return the array as is) if(arr.length < mr){ return arr }else { const maxPages = Math.ceil(arr.length/mr) // will make a nested array from every 4 indexes of arr, and put it inside of the results array for(let i = 0; i < maxPages; i++){ results[i] = arr.slice(mr*pn, mr*pn+mr) pn+=1 } console.log(results) return results } } var x = paginate([1,2,3,4,5,6])

暂无
暂无

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

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