Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript正则表达式:清除CSV_Javascript_Regex_Csv - Fatal编程技术网

Javascript正则表达式:清除CSV

Javascript正则表达式:清除CSV,javascript,regex,csv,Javascript,Regex,Csv,我有一个对象属性值的CSV,我需要从中删除所有空值 var myObj = { a: "", b: "", c: "c", d: "" }; var result = Object.values(myObj).join(","); console.log("result before: " + result); // result before: ,,c, result = result.replace(/(^\,)|(\,$)|\,\,/, ""); console.log("result

我有一个对象属性值的CSV,我需要从中删除所有空值

var myObj = { a: "", b: "", c: "c", d: "" };

var result = Object.values(myObj).join(",");
console.log("result before: " + result); // result before: ,,c,

result = result.replace(/(^\,)|(\,$)|\,\,/, "");
console.log("result after: " + result); // result after: ,c,
正如您所看到的,自定义“trip(,)”的正则表达式工作得不太好,错误在哪里

我需要删除所有“,”和修剪结束(,)+修剪开始(,)

PS.

A) 一种解决方案是过滤对象

B) 另一个解决方案是修复正则表达式

如果我理解了这个问题,那就是我的解决方案:

const obj={a:'a',b:'c:'d:'d'}
const res=对象键(obj)
.reduce((c,e)=>obj[e]?[…c,obj[e]]:c,[])
.join(“,”)

console.log(res)
如果我理解了这个问题,那将是我的解决方案:

const obj={a:'a',b:'c:'d:'d'}
const res=对象键(obj)
.reduce((c,e)=>obj[e]?[…c,obj[e]]:c,[])
.join(“,”)

log(res)
不要使用正则表达式解决方案,只连接定义的元素

var myObj = { a: "", b: "", c: "c", d: "" };

var result = Object.values(myObj).filter(function(o){
    return o;
}).join(",");
console.log("result before: " + result);
正则表达式解

var myObj = { a: "", b: "", c: "c", d: "" };

var result = Object.values(myObj).join(",");
console.log("result before: " + result); // result before: ,,c,

result = result.replace(/(^\,+)|(\,+$)|(?!\,[^,])(\,|\,\,+)/g, "");
console.log("result after: " + result); // result after: c
工作原理

(^\,+)匹配字符串开头的任意数量的逗号
|(\,+$)或结尾的任何数字
|(?!\,[^,])(\,|\,\,+)或后跟其他字符的单个或多个逗号

不要使用正则表达式解决方案,只连接已定义的元素

var myObj = { a: "", b: "", c: "c", d: "" };

var result = Object.values(myObj).filter(function(o){
    return o;
}).join(",");
console.log("result before: " + result);
正则表达式解

var myObj = { a: "", b: "", c: "c", d: "" };

var result = Object.values(myObj).join(",");
console.log("result before: " + result); // result before: ,,c,

result = result.replace(/(^\,+)|(\,+$)|(?!\,[^,])(\,|\,\,+)/g, "");
console.log("result after: " + result); // result after: c
工作原理

(^\,+)匹配字符串开头的任意数量的逗号
|(\,+$)或结尾的任何数字
|(?!\,[^,])(\,|\,\,+)或后跟其他字符的单个或多个逗号

为什么不在第2行中过滤数组

var result = Object.values(myObj).filter(function (x) {return x!="";}).join(",");

为什么不在第2行过滤数组呢

var result = Object.values(myObj).filter(function (x) {return x!="";}).join(",");

所以你想在最后加上
c
?或者
{c:“c”}
?是的,删除所有空值。您想要的输出对象的键具有非空值,对吗?是的,只有非空值。您想要的只是
c
?或者
{c:“c”}
?是的,删除您想要的输出对象中的所有空值,并且键具有非空值,对吗?是的,只有非空值创建解决方案!我想知道正则表达式中的问题是什么:)我添加了一个正则表达式解决方案。很好的解决方案!然而,我想知道正则表达式中的问题是什么:)我添加了一个正则表达式解决方案。