Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 将对象转换为字符串_Javascript_String_Object - Fatal编程技术网

Javascript 将对象转换为字符串

Javascript 将对象转换为字符串,javascript,string,object,Javascript,String,Object,我正在尝试将对象转换为库toString()函数的普通JavaScript字符串。 所需的输出如下所示 var obj = {a: 1, b:2, c:"string"} function toString(ins) { if(typeof ins === "object" && ins.length === undefined) { var str = ""; //convert to string return str;

我正在尝试将对象转换为库
toString()
函数的普通JavaScript字符串。
所需的输出如下所示

var obj = {a: 1, b:2, c:"string"}
function toString(ins) {
    if(typeof ins === "object" && ins.length === undefined) {
        var str = "";
        //convert to string
        return str;
    }
}
toString(obj)
//should return "a:1, b:2, c:string"

<>我试着看,但是找不到合适的答案。

正如我在我的评论中所说的,你最好考虑使用<代码> JSON。StrugI化(OBJ)和修改你的代码来使用那个行业标准函数,即使它不能产生你所要求的精确输出。

如果你真的想要你想要的,并且想自己做,那么你可以这样做:

var obj = {a: 1, b:2, c:"string"}
function toString(ins) {
    if(typeof ins === "object" && ins.length === undefined) {
        var pieces = [];
        for (var prop in ins) {
            if (ins.hasOwnProperty(prop)) {
                pieces.push(prop + ":" + ins[prop]);
            }
        }
        return pieces.join(", ");
    }
}
toString(obj);
工作演示:


警告:这不处理嵌套对象。您可能希望使用递归算法来处理嵌套对象。

您可能希望了解
JSON.stringify(obj)
的作用,因为它处理嵌套对象,并且是一种行业标准格式。它并不是您想要的输出(在几个不同的地方引用),但它内置于所有现代浏览器中,因此您可能希望从中开始
JSON.parse(str)
是解析的反向过程。或者代替peices和for循环,
str.replace(/“/g,”)
str.replace(/,/g,”,”)
,等等。@Wyatt-我猜你的意思是先做
JSON.stringify()
,然后再做
.replace()
内部引号。这是一个选项,但实际值中的任何双引号字符都会有问题。这可能比我写的更复杂,但要正确删除不需要的双引号,我会执行类似于
str.replace(/{/g,”);str.replace(/“:/g,:”)的操作
@Wyatt-如果你认为这是最好的答案,请随意发布你自己的问题的答案。我对这个想法做了一点修改,并确定不容易涵盖所有可能存在于字符串值中的内容,而你不需要
.replace()
在获取所有其他对象时产生影响,因此我可能不会朝那个方向走。一旦我完全完成了算法,我会这样做,但现在我会继续工作。此外,获取任何对象深度的函数也会用于嵌套对象的循环。