Javascript 如何修剪数组中的数组元素?

Javascript 如何修剪数组中的数组元素?,javascript,arrays,Javascript,Arrays,我有这样一个数组: const allData = [ ['Alex ','foo@email',' ',], [' ','goo@gmail, '232-333-2222'], ] 我想修剪数组中的所有值,例如'Alex'变成'Alex' 我尝试过以下解决方案: for(让所有data.entries()的数据{ for(让数据的内容){ content.trim(); } } allData.forEach((数据)=>{ data.forEach((内容)=>{ c

我有这样一个数组:

const allData = 
[
  ['Alex   ','foo@email','   ',],
  ['  ','goo@gmail, '232-333-2222'],
]
我想修剪数组中的所有值,例如
'Alex'
变成
'Alex'

我尝试过以下解决方案:

for(让所有data.entries()的数据{
for(让数据的内容){
content.trim();
}
}
allData.forEach((数据)=>{
data.forEach((内容)=>{
content.trim();
});
});
allData.map((数据,索引)=>{
返回data.map((content)=>content.trim());
});
我试过
content=content.trim()也适用于所有这些

但即使它确实修剪了值,也不会将修改后的值保存在数组中

我错过了什么?我希望
allData
包含修剪后的值。

您可以使用两个嵌套的值,并将结果保存在一个新变量
res

const allData=
[
['Alex','foo@email','   ',],
['  ','goo@gmail', '232-333-2222'],
];
const res=allData.map(arr=>arr.map(e=>e.trim());
控制台日志(res)
您可以使用两个嵌套变量,并将结果保存在新变量
res

const allData=
[
['Alex','foo@email','   ',],
['  ','goo@gmail', '232-333-2222'],
];
const res=allData.map(arr=>arr.map(e=>e.trim());

控制台日志(res)您的代码没有问题(第三个版本)。唯一的误解是
.map()
不会修改原始数组,而是返回一个新数组。看:

//这基本上是您的代码。
常数allData=
[
['Alex','foo@email','   ',],
['  ','goo@gmail', '232-333-2222'],
];
const trimmedAllData=allData.map((数据,索引)=>{
返回data.map((content)=>content.trim());
});

控制台日志(trimmedAllData)您的代码没有问题(第三个版本)。唯一的误解是
.map()
不会修改原始数组,而是返回一个新数组。看:

//这基本上是您的代码。
常数allData=
[
['Alex','foo@email','   ',],
['  ','goo@gmail', '232-333-2222'],
];
const trimmedAllData=allData.map((数据,索引)=>{
返回data.map((content)=>content.trim());
});


控制台日志(trimmedAllData)
content.trim()本身只是一个没有任何更改的表达式,因为它没有被分配给任何对象。您的代码进行修剪,但不会将修剪后的值存储回数组。
let
创建一个范围绑定实例。因此,对另一个作用域
trim
赋值是无效的,不会修改原始字符串,因为它们是不可变的。您需要通过将内部forEach更改为:
data.forEach((content,i)=>data[i]=content.trim())
content=content.trim()
来替换数组的索引,只需使用经过修剪的字符串重新分配局部参数
content
。它不会更新原始数组。
content.trim()本身只是一个没有任何更改的表达式,因为它没有被分配给任何对象。您的代码进行修剪,但不会将修剪后的值存储回数组。
let
创建一个范围绑定实例。因此,对另一个作用域
trim
赋值是无效的,不会修改原始字符串,因为它们是不可变的。您需要通过将内部forEach更改为:
data.forEach((content,i)=>data[i]=content.trim())
content=content.trim()
来替换数组的索引,只需使用经过修剪的字符串重新分配局部参数
content
。它不会更新原始数组。这与不修改原始数组的
map
无关。即使是
forEach
也不适用于OP@adiga我想是的。OP有一个基本的误解,你可以清楚地看到他/她的第一个和第二个解决方案。对于第三个问题,我认为基本上是相同的问题。因此,虽然这提供了一个解决方案,但我不确定它是否完全消除了OP的误解。@KristiánBalla答案没有解释为什么
content.trim()
forEach
中不起作用,或者为什么
content=content.trim()
不起作用。@adiga我想这正是我所说的。:-)谢谢大家。为了让我的答案更容易理解,我对答案进行了一些扩展。这与
map
不修改原始数组无关。即使是
forEach
也不适用于OP@adiga我想是的。OP有一个基本的误解,你可以清楚地看到他/她的第一个和第二个解决方案。对于第三个问题,我认为基本上是相同的问题。因此,虽然这提供了一个解决方案,但我不确定它是否完全消除了OP的误解。@KristiánBalla答案没有解释为什么
content.trim()
forEach
中不起作用,或者为什么
content=content.trim()
不起作用。@adiga我想这正是我所说的。:-)谢谢大家。为了使我的答案更容易理解,我把答案扩大了一点。