2017-07-25 73 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