在多个对象属性字段上存储单个元素的属性

时间:2014-08-25 20:58:37

标签: javascript arrays object

在多个对象属性中的多个数组上传播将应用于单个元素的属性是不正确的做法 如

var properties={};
properties.name=['fish','car','plane','boat', UP TO 1000];
properties.color=['blue','green','yellow','magenta','etc'];
properties.link=['link1','link2','link3','etc'];
properties.date=[,,,,,];   
properties.XY=[,,,,,];   
properties.subject=[,,,,,];   
properties.createdBy=[,,,,,];   

Element.name=properties.name[1];
Element.color=properties.color[1];
Element.link=properties.link[1];
Element.onclick=properties.date[1];

我最初使用的是嵌入在函数或闭包中的数组,但却得到了很多负面反馈。对于使用库还没有兴趣。现在试着坚持使用vanilla.js。

1 个答案:

答案 0 :(得分:2)

不要将每个属性放在一个单独的数组中,而是创建一个对象数组:

var properties = [
    { name: 'fish',
      color: 'blue',
      link: 'link1'
    },
    { name: 'car',
      color: 'green',
      link: 'link2'
    }
    ...
];

然后您只需访问Element = properties[i],它就会在一个地方拥有您想要的所有属性。

为避免重复所有属性名称,您可以编写一个函数:

function makeProp (name, color, link) {
    return { name: name, color: color, link: link };
}

然后你的数组看起来像:

var properties = [
    makeProp('fish', 'blue', 'link1'),
    makeProp('car', 'green', 'link2'),
    ...
];