[英]Convert object's properties and values to array of key value pairs
我對 JavaScript 相當陌生,不確定這是否可行,但基本上我想獲取一個對象並將其轉換為格式的字符串數組; array[0] = 'prop1=value1'
這背后的原因是我讓用戶將 k=v 對的列表輸入到一個表單中,后來它被寫成一個 json blob 中的對象。 從鍵值 csl 到 json 對象很簡單,現在我需要以另一種方式返回(我已經通過 ajax 調用接收到 JSON 並想要填充一個空白表單)。 這在 JavaScript 中可能嗎? 如果沒有,請提供合理的解決方法。
示例代碼;
調試器中的對象;
Object
private_key: "private-key"
public_key: "public-key"
我需要將其轉換為;
"private_key=private-key,public_key=public-key"
基本上我需要這樣的東西(偽代碼)
var outputString = '';
foreach (prop in obj)
{
outputString = outputString + prop.tostring() + '=' + prop.value + ',';
}
你可能正在尋找類似的東西
var obj = {value1: 'prop1', value2: 'prop2', value3: 'prop3'};
var arr = [];
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
arr.push(key + '=' + obj[key]);
}
};
var result = arr.join(',');
alert(result);
請注意,如果您的值是字符串,它將正常工作; 如果它們是復雜的對象,那么您將需要添加更多代碼。
或者您可以只使用jQuery.param ,它可以滿足您的需求,即使對於復雜類型(盡管它使用&
字符作為分隔符,而不是逗號。
在 ES6 中你可以使用Object.entries({object1:1,object2:2});
. 結果是: [["object1",1],["object2",2]]
var array = [];
for (k in o)
{
if (o.hasOwnProperty(k))
{
array.push(k+"="+o[k]);
}
}
然后,您可以為最終字符串join
數組。
var object = {
private_key: "private-key",
public_key: "public-key"
};
var array = [];
for (var prop in object)
array.push(prop + "=" + object[prop]);
return array.join(','); // "private_key=private-key,public_key=public-key"
請注意,訂單無法保證。
obj = { private_key: "private-key", public_key: "public-key" } str = JSON.stringify(obj).replace(/[{}]/g, '').replace(/"/g, '').replace(/:/g, '='); console.log("Using JSON.stringify:\\n", str); str = Object.keys(obj).map((key) => `${key}=${obj[key]}`).join(',') console.log("Using ES6 keys/map:\\n", str); str = jQuery.param(obj).replace(/&/g,','); console.log("Using jQuery.param:\\n", str);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
1-班輪:
Object.entries(yourObj).map(e => ({ name: e[0], value: e[1] }));
使用示例:
let yourObj = { foo: "bar", baz: "bas" };
// turn object properties into array entries
let array = Object.entries(yourObj).map(e => ({ name: e[0], value: e[1] }));
// returns
array = [
{ name: "foo", value: "bar" },
{ name: "baz", value: "bas" },
]
// loop over it
for (let prop of array) {
console.log(prop.name, "=", prop.value);
}
// shows
foo = bar
baz = bas
或者,以您想要的格式創建字符串:
Object.entries(yourObj).map(e => e[0] + "=" + e[1]).join(",");
"foo=bar,baz=bas"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.