如何将关联数组连接到字符串中

ali*_*ali 14 javascript string associative-array join

我现在正试图这样做,我想知道是否有一个"最常用"的方法将一个关联数组(它的值)连接成一个由字符分隔的字符串.

例如,我有

var AssocArray = { id:0, status:false, text:'apple' };
Run Code Online (Sandbox Code Playgroud)

连接此对象的元素所产生的字符串将是

"0, false, 'apple'" or "0, 0, 'apple'"
Run Code Online (Sandbox Code Playgroud)

如果我们用","字符加入他们任何想法?谢谢!

ale*_*lex 23

Object.keys(AssocArray).map(function(x){return AssocArray[x];}).join(',');
Run Code Online (Sandbox Code Playgroud)

PS:Object.values某处有方法,但它不是标准.还有外部库hashish.

  • 我真的很喜欢单行,但你必须记住两件事:它不适用于IE <9,使用`map`对于非常大的对象来说可能很慢. (2认同)

Hid*_*dde 9

只需循环遍历数组.JavaScript中的任何数组都有索引,甚至是关联数组:

    var AssocArray = { id:0, status:false, text:'apple' };
    var s = "";
    for (var i in AssocArray) {
       s += AssocArray[i] + ", ";
    }
    document.write(s.substring(0, s.length-2));
Run Code Online (Sandbox Code Playgroud)

将输出: 0, false, apple


Max*_*Art 5

的功能的实现一样Object.map,Object.forEach等仍在讨论之中.现在,你可以坚持这样的事情:

function objectJoin(obj, sep) {
    var arr = [], p, i = 0;
    for (p in obj)
        arr[i++] = obj[p];
    return arr.join(sep);
}
Run Code Online (Sandbox Code Playgroud)

编辑:使用临时数组并加入它而不是字符串连接以提高性能.

编辑2:在大多数最近的浏览器中,似乎arr.push(obj[p]);不是递增计数器实际上更快.看评论.