如何将Javascript对象的列表动态创建为逗号分隔的对象

How to dynamically create a list of Javascript objects into comma separated objects

本文关键字:对象 分隔 创建 列表 Javascript 动态      更新时间:2023-09-26

如何在Javascript中的另一个对象中创建逗号分隔的对象列表?至少我想我正在努力做到这一点。

我想要的最终结果是:

var endresult = { 'MD': { fill: 'yellow' }, 'VA': { fill: 'blue' }, 'IL': { fill: 'red' }, 'SC': { fill: 'green' } };

我尝试过使用数组、创建类、Array.join((、创建多个字符串和连接。我也尝试过创建键-对象-值对,但似乎无法成功创建。

一般目标是获取State和Color变量的列表,将它们传递到一类键:对象-值对中,然后将这个新的实例化对象添加到一个列表中,然后该列表将以与提供的示例代码相同的语法传递到变量endresult中。

提前谢谢(我有一种即将接受教育的感觉(。

给定两个数组,一个带有状态,另一个带有颜色名称,您可以使用此函数来获得最终结果:

function combine(states, colors) {
    return colors.reduce( (result, color, i) => 
        Object.assign(result, { [states[i]]: { fill: color } }), {});
    
}
// sample data
var states = ['MD', 'VA', 'IL', 'SC'];
var colors = ['yellow', 'blue', 'red', 'green'];
// convert
var result = combine(states, colors);
// output
console.log(result);

var colors = {LA: {fill: 'blue'}};
colors['MA'] = {fill: 'red'};
//colors is now === {LA: {fill: 'blue'}, MA: {fill: 'red'}};

请记住,当您使用Object[key]表示法时,键最终需要是一个字符串才能按您的意愿工作。

不过,如果"fill"是您想要保留的唯一值,则可以通过删除{fill: 'color'}对象并执行{LA: 'blue', ...}来简化对象。

参见:

Mozilla属性访问者文档

var StateStyles = {};
$.each(data, function (i, item) { 
     StateStyles[item.state] = { fill: item.color };
); 

我感谢大家的帮助。我从特林科特和Andrew Babin那里了解到了缺失的东西;我不得不用括号分配一把钥匙。现在我有一个对象,里面有多个对象。我不知道这是可以做到的。