如何在javascript中覆盖多维数组中的数据?
我得到了一个多维数组,其中每个数组都是所有用户信息的组合(由用户输入) 我希望用户能够修改他的信息,例如他的姓名或电话号码,以便用户下次登录时显示他的新信息 userList保存在JSON上,其想法是保存更改并从中加载 例如: 如果我的数组如何在javascript中覆盖多维数组中的数据?,javascript,html,arrays,Javascript,Html,Arrays,我得到了一个多维数组,其中每个数组都是所有用户信息的组合(由用户输入) 我希望用户能够修改他的信息,例如他的姓名或电话号码,以便用户下次登录时显示他的新信息 userList保存在JSON上,其想法是保存更改并从中加载 例如: 如果我的数组 userList= JSON.parse(localStorage.getItem('userListLS') if(userList == null) { userList = [ ['Isaac', 'Gar
userList= JSON.parse(localStorage.getItem('userListLS')
if(userList == null) {
userList =
[
['Isaac', 'Garth', 'IsaacG11@email.com', 'Mazda']
['Matthew', 'Miller', 'mmiller21@mail.com', 'Volvo']
]
}
假设艾萨克已登录,他希望将自己的名字改为加布里埃尔,并将电子邮件改为IsaacG21@email.com,这样新阵列将:
userList= [
['Gabriel', 'Garth', 'IsaacG21@email.com', 'Mazda']
['Matthew', 'Miller', 'mmiller21@mail.com', 'Volvo']
]
如何做到这一点
请仅使用JS和HTML。最简单的方法是直接使用索引选择器修改数据: 这种方法变异初始数组,而不是返回新的引用,这可能会导致不必要的副作用
函数修改数据(数据、用户ID、字段ID、新数据){
if(数据[userId]&&data[userId][fieldId]){
数据[userId][fieldId]=新数据;
}
返回数据;
}
//范例
var userList=[
['Isaac','Garth','IsaacG11@email.com“,”马自达“],
['Matthew','Miller','mmiller21@mail.com“,”沃尔沃“]
];
常量字段名称ID=0;
const USER_ID=0;
var MODIFED=modifyData(用户列表、用户ID、字段名称ID、“Morty”)
log('initial',userList);
console.log('modified',modified)代码>地图的良好用例:
const users = new Map(
userList.map(
( [first,name,email,car]) => [first, { first,name,email,car }]
)
);
因此,要更改特定用户的电子邮件:
users.get("Isaac").email = "test @ gmail.com";
还有几个用例:
//set a whole user:
users.set("Jack", {
first:" Jack",
name:"Daniels",
email:"me@example.com",
car:"VW"
});
//get an array of users again
userList = [...users.values()];
@IssacG你只想要JS解释还是HTML标签?你能改变结构吗?我建议使用对象数组而不是数组数组,您好。我编辑了这个线程,提到我正在使用JSON,对代码进行了一些修改,以显示加载JSON保存的示例。JS解释没问题,我已经在为HTMl表单使用contenteditable了。数据正在更新,只是没有保存。顺便说一句,我使用的是数组数组(我想这叫做矩阵?),因为这是我知道的唯一方法,我不知道对象数组是什么。