繁体   English   中英

将javascript数组转换为相同键/值的对象

[英]Convert javascript array to object of same keys/values

我有一个返回数组的函数,如下所示:

在此输入图像描述

但我正在尝试填充SweetAlert2对话框。

正如文档所示 ,所需的输入将如下所示

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

考虑到密钥与值相同,我怎样才能将我的数组转换为所需的格式?

所以,这样的结果将是结果:

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

我尝试过JSON.stringify ,但输出不是我需要的:

“[[” AAA123" , “Açucena”, “布劳纳斯”,“C。 Fabriciano “ ”格格“, ”gegeq2“, ”伊帕廷加“, ”若阿内夏“, ”梅斯基塔“, ”Rodoviário“, ”睾丸中“, ”teste2“, ”TIMOTEO“, ”Tomatoentro“, ”TS“]]”

这可以通过简单的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)); 

关键是你可以使用obj [“string”]技术分配属性:

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

如果你使用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;
}, {});
Object.assign(
  {},
  ...['value1', 'value2', 'value3', 'value4', 'value5'].map((value) => ({
    [value]: value,
  })),
)

回报

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

没有常见的ESlint规则错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM