js怎么修改二维数组的索引,如下图,我想把0改成name,怎么写呢?

图片描述

clipboard.png
提示username未定义,定义后也木有用,这个写应该改是不可以的,有什么好办法吗?

阅读 6.8k
10 个回答

你自己的解决方法当然是正确的,我这里给你一个类似 @熊猫桑@listenWind 的解决办法,不过是用 map&reduce 来处理的。map&reduce 是用来处理数据的常规方法

const data = [
    ["lalala", "123", "魏忠贤", "双", "15888888", "null@jj.com", "000001", "1"],
    ["hehehe", "456", "杨不悔", "女", "137777777", "full@zz.com", "000002", "0"]
];

const fields = ["username", "password", "nickname", "sex", "phone", "code", "email", "status"];

const result = data.map(arr => {
    return fields.reduce((obj, name, i) => {
        obj[name] = arr[i];
        return obj;
    }, {});
});

console.log(result);

clipboard.png

function changeArr(a) {
    var arr = a;
    var newArr = [];
    var infos = ["username", "password", "nickname", "sex", "phone", "code", "email", "status"];
    for (var i = 0; i < arr.length; i++) {
        var obj = {};
        for (var j = 0; j < arr[i].length; j++) {
            obj[infos[j]] = arr[i][j];
        }
        newArr.push(obj);
    }
    return newArr;
}

$scope.batchaddstudent=changeArr($scope.batchaddstudent);

希望有所帮助!!

你需要去了解一下json

用json键值对能帮到你
还能学到新知识呢

建议直接转对象数组吧。

给个Lodash写法:

var new = [];
var old = [['lalala','123','魏忠贤','双','15888888','null@jj.com','000001','1'],['hehehe','456','杨不悔','女','137777777','full@zz.com','000002','0']];
var temp = ['user','pass','nick','sex','mail','code','status'];
for (var i = 0; i < old.length; i++) {
    new.push(_.zipObject(temp, old[i]));
}

首先你要考虑你需要用数据去完成什么功能,然后再去考虑用数组还是json对象来处理,如果你想用key值来说明对应value的意义的话,还是用json对象吧,方便处理

var t = arr[0]
arr[0] = arr[2]
arr[2] = t

可是不太建议这么做呀。

arr["name"] = a[0];
delete a[0];
新手上路,请多包涵

可以把数组转换成对象的方式存储,[{"username":"","age":""},{}]

图片描述

解决了,谢谢大家提供的意见。

推荐问题