Javascript Can';t将嵌套数组中的一个值转换为另一个值

Javascript Can';t将嵌套数组中的一个值转换为另一个值,javascript,Javascript,任务如下: 编写一个名为“transformEmployeeData”的函数,用于转换 将员工数据从一种格式转换为另一种格式 这个论点看起来像这样: 给定该输入,返回值应如下所示: 请注意,输入可能有不同的行数或不同的值 密钥比给定的样本 例如,假设人力资源部在 每个员工都有记录。您的代码应该灵活地适应这一点 我试过这个: function transformEmployeeData(array) { var obj = {}, arr = []; array.forEach(f

任务如下:

编写一个名为“transformEmployeeData”的函数,用于转换 将员工数据从一种格式转换为另一种格式

这个论点看起来像这样:

给定该输入,返回值应如下所示:

请注意,输入可能有不同的行数或不同的值 密钥比给定的样本

例如,假设人力资源部在 每个员工都有记录。您的代码应该灵活地适应这一点

我试过这个:

function transformEmployeeData(array) {

  var obj = {}, arr = [];

    array.forEach(function(cv){
          for(var i = 0, l = cv.length; i < l; i++) {
                obj[cv[i][0]] = cv[i][1];

          }
       arr.push(obj);
    });

  return arr
}

我们将一如既往地感谢您的帮助

你是对的,这是一个范围问题。您应该在forEach的每次迭代中定义一个新的obj,而不是在它之外

function transformEmployeeData(array) {
    var arr = [];
    array.forEach(function(cv){
        var obj = {};
        for(var i = 0, l = cv.length; i < l; i++) {
            obj[cv[i][0]] = cv[i][1]; 
        }
        arr.push(obj);
    });

  return arr
}
函数transformEmployeeData(数组){
var-arr=[];
array.forEach(函数(cv){
var obj={};
对于(变量i=0,l=cv.length;i
函数变换(arr){
返回arr.map(函数(sub){//,用于数组arr的每个子数组sub
返回sub.reduce(函数(obj,a){//创建一个新对象obj
obj[a[0]]=a[1];//将a[0]中的键设置为值a[1]
返回obj;
}, {});
});
}
变量数组=[[“姓氏”,“乔”],[“姓氏”,“吹”],[“年龄”,42],“角色”,“职员”],[[“姓氏”,“玛丽”],[“姓氏”,“詹金斯”],[“年龄”,36],“角色”,“经理”];

log(转换(数组))
for
循环的内部
可能是
cv.forEach
。不再需要为数组编写这样的显式循环了。@4castle是因为速度吗?这让我明白了,但有时我忍不住要解释为什么我的大脑会遵循不同的模式……这与其说是速度,不如说是拥有更多的声明性代码。说什么而不是怎么说。
function transformEmployeeData(array) {

  var obj = {}, arr = [];

    array.forEach(function(cv){
          for(var i = 0, l = cv.length; i < l; i++) {
                obj[cv[i][0]] = cv[i][1];

          }
       arr.push(obj);
    });

  return arr
}
(function(i){
   obj[cv[i][0]] = cv[i][1];
}(i));
function transformEmployeeData(array) {
    var arr = [];
    array.forEach(function(cv){
        var obj = {};
        for(var i = 0, l = cv.length; i < l; i++) {
            obj[cv[i][0]] = cv[i][1]; 
        }
        arr.push(obj);
    });

  return arr
}