【问题标题】: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);
  • 以上也消除了对全局变量的需要,应该避免。
  • 如果您不了解“按引用”和“按值”的概念,请不要快速解释 - 也许这会有所帮助:stackoverflow.com/questions/7744611/…stackoverflow.com/questions/373419/…
  • 在你的情况下:arrTwo = 改变了 arrTwo 指向的位置,所以你基本上做了function(arrOne) { var arrTwo = - 你传入参数的 arrTwo 被丢弃了,因为你已经把它做成了别的东西跨度>
  • 感谢大家的建议

标签: javascript jquery arrays function


【解决方案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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    相关资源
    最近更新 更多