web-dev-qa-db-ja.com

javascript配列を同じキー/値のオブジェクトに変換します

次のように、配列を返す関数があります。

enter image description here

しかし、私はSweetAlert2ダイアログにデータを入力しようとしています。

ドキュメントが例示しているように 、必要な入力は次のようになります

inputOptions: {
    'SRB': 'Serbia',
    'UKR': 'Ukraine',
    'HRV': 'Croatia'
  },

キーが値と同じになることを考慮して、配列を必要な形式に変換するにはどうすればよいですか?

したがって、次のような結果になります。

{
    'aaa123': 'aaa123',
    'Açucena': 'Açucena',
    'Braúnas': 'Braúnas',
    [...]
}

私が試してみました JSON.stringify、しかし出力は私が必要とするものではありません:

"[[" aaa123 "、"Açucena "、"Braúnas "、" C。ファブリシアーノ "、" gege "、" gegeq2 "、" Ipatinga "、"Joanésia "、" Mesquita "、"Rodoviário "、" teste "、" teste2 "、"Timóteo "、" Tomatoentro "、" ts "]]"

5
Phiter

これは、単純なreduce呼び出しで実行できます。

// Demo data
var source = ['someValue1', 'someValue2', 'someValue3', 'other4', 'other5'];


// This is the "conversion" part
var obj = source.reduce(function(o, val) { o[val] = val; return o; }, {});


// Demo output
document.write(JSON.stringify(obj));
18
Amit

これの鍵は、obj ["string"]テクニックを使用してプロパティを割り当てることができるということです。

function ArrayToObject(arr){
    var obj = {};
    for (var i = 0;i < arr.length;i++){
        obj[arr[i]] = arr[i];
    }
    return obj
}
2
user3163495

jQueryを使用している場合。

$.extend({}, ['x', 'y', 'z']);

そうでない場合;

Object.assign({}, my_array);

もう一つの例;

var arr = [{name: 'a', value: 'b', other: 'c'}, {name: 'd', value: 'e', other: 'f'}];

var obj = arr.reduce(function ( total, current ) {
    total[ current.name ] = current.value;
    return total;
}, {});
1
Cem Arguvanlı
Object.assign(
  {},
  ...['value1', 'value2', 'value3', 'value4', 'value5'].map((value) => ({
    [value]: value,
  })),
)

戻り値

{value1: "value1", value2: "value2", value3: "value3", value4: "value4", value5: "value5"}

一般的なESlintルールエラーはありません。

1
onlyurei