Преобразование свойств объекта и значений в массив пар значений ключа - программирование

Преобразование свойств объекта и значений в массив пар значений ключа

Я новичок в JavaScript и не уверен, что это возможно, но в основном я хотел бы взять объект и преобразовать его в массив строк в формате; array[0] = 'prop1=value1'

Причиной этого является то, что у меня есть пользователь, который вводит список пар k = v в форму, позже он записывается как объект в json blob. Переход от ключевого значения csl к объекту json был простым, теперь мне нужно вернуться в другую сторону (я получил JSON через вызов ajax и хочу заполнить пустую форму). Возможно ли это в 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 + ',';
}
4b9b3361

Ответ 1

Вероятно, вы ищете что-то в строках

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, который делает то, что вы хотите, даже для сложных типов (хотя он использует & символ в качестве разделителя вместо запятой.

Ответ 2

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

var array = [];
for (k in o)
{
    if (o.hasOwnProperty(k))
    {
        array.push(k+"="+o[k]);
    }
}

Теперь вы можете join массива для вашей окончательной строки.

Ответ 4

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>

Ответ 5

В ES6 вы можете использовать Object.entries({object1:1,object2:2});. Результат: [["object1",1],["object2",2]]