2017-07-25 88 views
1

我有一个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 = “键[]”'你的复选框,并在服务器收到数组自动? –

+0

我不太明白你的意思。当我发布表单时,我需要一个CSV字符串,而不是数组 – Serge

回答

2

一种可能的方法:

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(); 
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);

0

你可以试试这个办法还,

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); 
+0

不需要映射,也许... – Serge