连接对象属性值

14
我有一个JavaScript对象。我想要连接所有它的属性值,比如说:

我有一个 JavaScript 对象。我想要连接所有它的属性值,比如说:

tagsArray["1"] = "one";
tagsArray["2"] = "two";
tagsArray["Z"] = "zed";

result = "one,two,zed"

为了背景说明,我有几个复选框,需要更新一个隐藏的selectedKeys字段。这里提供一个服务器端(Asp.Net)代码和AngularJS示例:

<input hidden id="selectedKeys" value="1,5,8">

@foreach (var tag in tagsDictionary) {
    <input type="checkbox" 
        ng-model="tagsArray['@tag.Key']" 
        ng-true-value  ="'@tag.Key'" 
        ng-false-value ="" 
        ng-change="change(tagsArray)" />@tag.Value
}

所以每次更改都需要更新#selectedKeys的值。


3
你可以在复选框中使用 name="key[]",这样服务器就可以自动接收一个数组,你不需要做其他操作。 - Niet the Dark Absol
我不是很理解你的意思。当我提交表单时,我需要一个CSV字符串,而不是一个数组。 - serge
5个回答

19

一种可能的方法:

var tagsArray = {};
tagsArray["1"] = "one";
tagsArray["2"] = "two";
tagsArray["Z"] = "zed";

var result = Object.values(tagsArray).join(",");
console.log(result); // "one,two,zed"

了解更多有关Array.prototype.joinObject.values的内容,请参见此处此处



4

通过 Object.values,您可以将值作为数组获取,然后只需要将其传递给字符串即可:

Object.values(tagsArray).toString();

4
您也可以尝试这种方法,
var tagsArray = {};
var result;
tagsArray["1"] = "one";
tagsArray["2"] = "two";
tagsArray["Z"] = "zed";

result = Object.keys(tagsArray).map(function(k){return tagsArray[k]}).join(",");
alert(result);

1
使用如下的for循环:
String result = "";
for (var prop in tagsArray) {
    if (object.hasOwnProperty(property)) {
        result = result + prop + ";";
    }
}

1
你可以使用Object.values()来访问对象中的每个值,并使用join()将它们相加。

var tagsArray = {
  "1" : "one",
  "2" : "two",
  "3" : "zed"
}

var joined = Object.values(tagsArray).join(',');

console.log(joined);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接