我对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 + ',';
}
答案 0 :(得分:36)
您可能正在寻找符合
的内容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,它可以执行您想要的操作,即使对于复杂类型也是如此(尽管它使用&
字符作为分隔符,而不是逗号。
答案 1 :(得分:4)
var array = [];
for (k in o)
{
if (o.hasOwnProperty(k))
{
array.push(k+"="+o[k]);
}
}
然后,您可以join
数组作为最终字符串。
答案 2 :(得分:4)
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"
请注意,订单无法保证。
答案 3 :(得分:4)
在ES6中,您可以使用Object.entries({object1:1,object2:2});
。结果是:[["object1",1],["object2",2]]
答案 4 :(得分:2)
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>
&#13;
答案 5 :(得分:0)
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"