将对象的属性和值转换为键值对的数组

eva*_*nal 21 javascript reflection introspection

我是JavaScript的新手,我不确定这是可行的,但基本上我想取一个对象并将其转换为格式的字符串数组; array[0] = 'prop1=value1'

这背后的原因是我让用户在表单中输入k = v对的列表,之后它被写为json blob中的对象.从键值csl到json对象很简单,现在我需要回到另一个方向(我通过ajax调用收到了JSON并希望填充一个空白表单).这在JavaScript中可行吗?如果没有,请提供合理的工作.

示例代码;

调试器中的对象;

 Object
        private_key: "private-key"
        public_key: "public-key"
Run Code Online (Sandbox Code Playgroud)

我需要将其转换为;

 "private_key=private-key,public_key=public-key"
Run Code Online (Sandbox Code Playgroud)

基本上我需要这样的东西(伪代码)

var outputString = '';
foreach (prop in obj)
{
    outputString = outputString + prop.tostring() + '=' + prop.value + ',';
}
Run Code Online (Sandbox Code Playgroud)

car*_*ira 38

你可能正在寻找类似的东西

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);
Run Code Online (Sandbox Code Playgroud)

请注意,如果您的值是字符串,它将正常工作; 如果它们是复杂的对象,那么您将需要添加更多代码.

或者您可以使用jQuery.param,它可以执行您想要的操作,即使对于复杂类型也是如此(尽管它使用&字符作为分隔符,而不是逗号.


rem*_*dib 5

在 ES6 中,您可以使用Object.entries({object1:1,object2:2});. 结果是:[["object1",1],["object2",2]]