提问人:victoriousVINAY 提问时间:11/16/2022 最后编辑:KonradvictoriousVINAY 更新时间:11/16/2022 访问量:266
如何从数组 elemnets 中删除空字符串
How to remove empty strings from array elemnets
问:
在这里,我获取一个字符串数据并将其转换为数组元素,但它最终在所有数组元素中得到一个空数组,我无法轻松删除它们。请帮忙。
let string_Data = `01226,Grover Cleveland,Anna,Uganda,Crucial Ltd,Tested Mutual B.V,Calvin Coolidge,
77110,John F. Kennedy,hora,Bosnia Herzegovina,Formal,Papal Corporation,Franklin Roosevelt,
29552,Lyndon B. Johnson,Margaret,Palau,Summaries Holdings Inc,Customize,Rutherford B. Hayes,`;
let making_Array = csv => {
var data = [];
for (let dataAry of csv.split('\n')) {
data.push(dataAry.split(','));
}
return data;
}
console.log(making_Array(string_Data));
答:
0赞
Barmar
11/16/2022
#1
空字符串是因为每行末尾的 。,
可以使用该方法删除数组的最后一个元素。slice()
data.push(dataAry.split(',').slice(0, -1))
当您使用负索引作为切片的末尾时,它将从末尾开始计数。
评论
0赞
Metro Smurf
11/16/2022
作为参考,该参数向后计数:负索引从数组末尾开始倒计 — 如果 end < 0,则使用 end + array.length 因此,在本例中,数组的最后一个元素被删除。-1
0赞
chovy
11/16/2022
#2
这将删除空字符串,但也会删除值。falsey
const values = arr.filter(Boolean);
评论
1赞
Barmar
11/16/2022
对于 CSV 来说可能不是一个好主意,因为它会删除行中间的空值。这将导致不同的行具有不同的列。
0赞
victoriousVINAY
11/16/2022
这就是为什么我们首先将它与\n分开的原因
1赞
Yanick Rochon
11/16/2022
#3
您可以在拆分之前准备字符串,而不是操作数组。
let string_Data = `01226,Grover Cleveland,Anna,Uganda,Crucial Ltd,Tested Mutual B.V,Calvin Coolidge,
77110,John F. Kennedy,hora,Bosnia Herzegovina,Formal,Papal Corporation,Franklin Roosevelt,
29552,Lyndon B. Johnson,Margaret,Palau,Summaries Holdings Inc,Customize,Rutherford B. Hayes,`;
let making_Array = csv => {
var data = [];
for (let dataAry of csv.split('\n')) {
// 1. trim both ends of the line for white space, tab, etc.
// 2. remove any last trailing comma
// 3. split using comma separator
data.push(dataAry.trim().replace(/,$/, '').split(','));
}
return data;
}
console.log(making_Array(string_Data));
FWIW 整个功能可以像这样简化和增强:
let header = ['id', 'col1', 'col2', 'col3', 'col4', 'col5', 'col6'];
let string_Data = `01226,Grover Cleveland,Anna,Uganda,Crucial Ltd,Tested Mutual B.V,Calvin Coolidge,
77110,John F. Kennedy,hora,Bosnia Herzegovina,Formal,Papal Corporation,Franklin Roosevelt,
29552,Lyndon B. Johnson,Margaret,Palau,Summaries Holdings Inc,Customize,Rutherford B. Hayes,`;
let making_Array = csv => csv
.split('\n')
.map(line => line
.trim() // 1. trim both ends of the line
.replace(/,$/, '') // 2. remove any last trailing comma
.split(',')) // 3. split using comma separator
.map(cols => Object.fromEntries(new Map(header
.map((colName, index) => [colName, cols[index] || '']))));
console.log(making_Array(string_Data));
评论
0赞
victoriousVINAY
11/16/2022
多谢。这对我有很大帮助,我也尝试更换,但不知道在哪里使用它。谢谢
0赞
Yanick Rochon
11/16/2022
没关系!如果你想将数组转换为某个对象,看看我刚刚发布的编辑。干杯!
1赞
victoriousVINAY
11/16/2022
你怎么知道,这是我程序的第二步。你真可怕
评论
,
,