23

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

7 に答える 7

41

おそらく、次のようなものを探しているでしょう。

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&を使用することができます (ただし、カンマの代わりに文字を区切り文字として使用します。

于 2013-01-30T23:25:42.110 に答える
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"

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

于 2013-01-30T23:28:07.097 に答える
4
var array = [];
for (k in o)
{
    if (o.hasOwnProperty(k))
    {
        array.push(k+"="+o[k]);
    }
}

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

于 2013-01-30T23:24:52.613 に答える