如何在javascript中覆盖多维数组中的数据?

如何在javascript中覆盖多维数组中的数据?,javascript,html,arrays,Javascript,Html,Arrays,我得到了一个多维数组,其中每个数组都是所有用户信息的组合(由用户输入) 我希望用户能够修改他的信息,例如他的姓名或电话号码,以便用户下次登录时显示他的新信息 userList保存在JSON上,其想法是保存更改并从中加载 例如: 如果我的数组 userList= JSON.parse(localStorage.getItem('userListLS') if(userList == null) { userList = [ ['Isaac', 'Gar

我得到了一个多维数组,其中每个数组都是所有用户信息的组合(由用户输入)

我希望用户能够修改他的信息,例如他的姓名或电话号码,以便用户下次登录时显示他的新信息

userList保存在JSON上,其想法是保存更改并从中加载

例如:

如果我的数组

    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了。数据正在更新,只是没有保存。顺便说一句,我使用的是数组数组(我想这叫做矩阵?),因为这是我知道的唯一方法,我不知道对象数组是什么。