为啥我的函数向返回未定义的对象数组添加键和增量值

Posted

技术标签:

【中文标题】为啥我的函数向返回未定义的对象数组添加键和增量值【英文标题】:Why is my function for adding key and incremental values to array of objects returning undefined为什么我的函数向返回未定义的对象数组添加键和增量值 【发布时间】:2021-06-21 15:13:15 【问题描述】:

关于我之前的问题:Add key and incremental values to array of objects

@ran.t 的解决方案效果很好。但是现在我正在尝试编写一个函数来重用该解决方案,我变得不确定。

无功能:

let arr_obj = [
       
         name: 'Hermione',
         order: 'books',
       ,
       
         name: 'Harry',
         order: 'brooms',
       ,
       
        name: 'Ron',
        order: 'food',
       
    ];

let order_size = 100;
arr_obj.forEach(d => 
   d['order_size'] = order_size;
   order_size -= 25;
);
console.log(arr_obj)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

使用函数调用(需要可重用性):

let arr_obj = [
       
         name: 'Hermione',
         order: 'books',
       ,
       
         name: 'Harry',
         order: 'brooms',
       ,
       
        name: 'Ron',
        order: 'food',
       
    ];

let order_size = 100;

const myFnc = (arr) => 
  arr.forEach(d => 
   d['order_size'] = order_size;
   order_size -= 25;
  );

console.log(myFnc(arr_obj));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

当我所做的只是将 forEach 放入函数中时,为什么会得到 undefined

【问题讨论】:

myFnc 没有return 语句,它修改了参数数组。 return arr;放在myFnc的末尾或使用console.log(arr_obj) @Barmar 谢谢,如果您将其添加为答案,我可以接受 有人已经发布了答案。 【参考方案1】:

你忘了回arr,兄弟。

【讨论】:

以上是关于为啥我的函数向返回未定义的对象数组添加键和增量值的主要内容,如果未能解决你的问题,请参考以下文章

为啥我对朋友函数有未定义的引用?

如何从数组中的对象添加新的键和值?

为啥 map() 返回一个未定义值的数组?

向数组中添加的对象变得未定义

为啥我的 JSON 响应在 forEach 上崩溃? TypeError 未定义

未能将键和值添加到javascript对象