函数不返回编辑的数组

Posted

技术标签:

【中文标题】函数不返回编辑的数组【英文标题】:function doesn't return edited array 【发布时间】:2021-05-09 15:02:35 【问题描述】:

我需要一个简单的函数来从现有数组创建新数组。我有很多数组,不是一次性操作,所以需要一个函数。

在函数内部一切正常,新数组包含我需要的值。但是在我执行它之后,新数组仍然是空的。

可能是什么问题?

$(document).ready(function() 
  const $myArrOne = [
    'img/cakes/cake1.jpg',
    'img/cakes/cake2.jpg',
    'img/cakes/cake3.jpg',
  ];
  let $myArrTwo = [];

  const $myFunc = function(arrOne, arrTwo) 
    arrTwo = arrOne.map(item => 
      return (item.slice(0, -4) + '-small.jpg');
    );
    return arrTwo;
  ;

  $myFunc($myArrOne, $myArrTwo);
  console.log($myArrTwo);

【问题讨论】:

你的函数看起来很奇怪,但为什么不只是$myArrTwo = $myFunc($myArrOne); 以上也消除了对全局变量的需要,应该避免。 如果您不了解“按引用”和“按值”的概念,请不要快速解释 - 也许这会有所帮助:***.com/questions/7744611/… 或 ***.com/questions/373419/… 在你的情况下:arrTwo = 改变了 arrTwo 指向的位置,所以你基本上做了function(arrOne) var arrTwo = - 你传入参数的 arrTwo 被丢弃了,因为你已经把它做成了别的东西跨度> 感谢大家的建议 【参考方案1】:

问题在于您没有将函数返回的结果(数组)分配给任何对象。您只需在函数内部创建一个新的数组变量,仅此而已。

你可以这样修复它:

const $myArrOne = [
    'img/cakes/cake1.jpg',
    'img/cakes/cake2.jpg',
    'img/cakes/cake3.jpg',
];

const $myFunc = arrOne =>
    arrOne.map(item =>
        item.slice(0, -4) + '-small.jpg');

let $myArrTwo = $myFunc($myArrOne);
console.log($myArrTwo);

【讨论】:

以上是关于函数不返回编辑的数组的主要内容,如果未能解决你的问题,请参考以下文章

编辑从计算属性返回的数组中的对象

函数的返回值能不能是数组?在其他函数中怎么接收?

从函数返回数组时类型不匹配

二维数组作为函数返回

如何从 mex 函数返回矩阵结构?

不返回数组 - Rails 模型函数