Functional programming 编写一份each&;映射方法-使用object.prototype.toString进行数组/对象迭代 正在尝试重新写入each()&map()

Functional programming 编写一份each&;映射方法-使用object.prototype.toString进行数组/对象迭代 正在尝试重新写入each()&map(),functional-programming,underscore.js,lodash,higher-order-functions,Functional Programming,Underscore.js,Lodash,Higher Order Functions,这应该与本机的forEach,或下划线或lodash方法一样。它应该采用数组或对象。关于是否使用Array.isArray或instanceof来确定传入的集合是对象还是数组,我听到了一些相互矛盾的意见,而我目前的理解是使用这个对象.prototype.toString是最好的方法。也许我完全错了。我已经为这个忙了好几个小时了,如果有任何建议或意见,我将不胜感激 我的函数似乎还可以,但它从未对我给它的任何数组或对象进行任何更改。如果它是一个对象,我想更改值,而不是属性名。对不起,如果我的评论是多

这应该与本机的
forEach
,或下划线或lodash
方法一样。它应该采用数组或对象。关于是否使用
Array.isArray
instanceof
来确定传入的集合是对象还是数组,我听到了一些相互矛盾的意见,而我目前的理解是使用这个
对象.prototype.toString
是最好的方法。也许我完全错了。我已经为这个忙了好几个小时了,如果有任何建议或意见,我将不胜感激

我的函数似乎还可以,但它从未对我给它的任何数组或对象进行任何更改。如果它是一个对象,我想更改值,而不是属性名。对不起,如果我的评论是多余的。请帮忙

TgEach(收集、回调)
下面是一些愚蠢的数组和对象。对于每一个,我都希望集合能够进行适当的修改。我弄错了吗

vartgobj={1:1,2:2,3:3,4:4,5:5};
var tgArr=[1,2,3,4,5];
//我是这样调用它的
TgEach(tgObj,函数(n){returnn+3});
TgEach(tgArr,函数(n){返回n+3});
//我给它一个集合和一个回调,每个项加三个。
//我希望“tgArr”现在等于“[4,5,6,7,8]”和
//现在等于{1:4,2:5,3:6,4:7,5:8}`
//但是什么都没有发生。。。
//这是我的函数。。。
var TgEach=函数(集合、回调){
var数据结构=0;
(函数ObjectOrArray(集合){
if({}.toString.call(collection)=“[object Array]”){
数据结构+=1;
}
else如果({}.toString.call(collection)=“[object]”){
数据结构+=2;
}
})();
if(数据结构===1){
对于(变量i=0;i}
调用回调时,您没有将结果分配给任何对象。尝试类似于
collection[key]=callback(collection[key])
调用回调时,您没有将结果分配给任何对象。尝试类似于
collection[key]=callback(collection[key])