web-dev-qa-db-ja.com

オブジェクトのプロパティと値をキーと値のペアの配列に変換します

私は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 + ',';
}
20
evanmcdonnal

あなたはおそらく次の線に沿って何かを探しています

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 を使用することもできます。これは、複雑なタイプであっても(コンマではなく&文字を区切り文字として使用しますが)必要なことを行います。

37
carlosfigueira
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"

順序が保証されていないことに注意してください。

4
Bergi

ES6では、Object.entries({object1:1,object2:2});を使用できます。結果は次のとおりです。[["object1",1],["object2",2]]

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

その後、最終文字列の配列をjoinできます。

4
Plynx
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>
2
mojoaxel
var obj =[
            {'2018-05-07':1},
            {'2018-05-08':3},
            {'2018-05-09':2}
        ];

        for(var i of obj) {
            var key = Object.keys(i).toString();
            console.log(i,'=',i[key]);
        }

結果

enter image description here

2
Ram Pukar