【发布时间】:2017-03-09 23:35:57
【问题描述】:
我正在 javascript 中制作一个复杂的树状数组/对象,以动态创建类似的页面(具有不同的配置文件)。由于它是静态的,公司的政策是将此数组保存在主常量文件中(当然,作为声明性常量)。所以我的问题是,如何在 javascript 数组中分配声明性属性?我知道我可以做到以下几点:
var a=[9,6,0,4];
a.title='profile 1';
但问题是那些是指令,而常量文件是一个大对象,所以我不能使用它。我知道我可以使用普通对象,但我真的想要数字索引、动态长度、推送/弹出方法等。我也知道每个都有替代品,比如使用数字作为属性名称,Object.keys(a)。长度等,但如果它只是一个数组,它会让我的生活变得更轻松。基本上,我需要在一条指令中创建它:
Array[2]
>0: Object
>1: Object
>length: 2
>title: "profile1"
>__proto__: Array[0]
编辑: 由于混乱,我将尝试弄清楚为什么我特别需要它是一条指令。正如我所提到的,常量文件是一个大对象,没有说明,但它是自己的声明,所以它必须是一个属性。
CONSTANTS={
const1: 'something',
const2: 'something',
const3: 'something',
...
const60: 'something',
myArray: [
[{},{},{},{}],//here the title property would go directly on the array
[{},{},{},{}],//same
[{},{},{},{}],//etc.
...
]
};
【问题讨论】:
-
没有办法在
var初始化器中做你想做的事。为什么不让a成为一个将数组作为其属性之一的对象? -
我不知道你期望输出/otcome 是什么。
-
因为它是一个动态数组,每个数组都有不同的某些属性(如title、meta、hidden等)。很抱歉没有说明我举的例子不是实际的结构。正如我一开始所说,真实的对象具有树的复杂性。
-
请注意,将字符串命名的属性放在数组上对于大多数目的来说是非常好的,它可能会导致一些意外行为。具体来说,如果您决定将数组序列化为 JSON 以进行(例如)传输或本地存储,那么以字符串命名的属性将会丢失。
-
我之前确实遇到过这种情况,但是,由于它充当创建接口的指南,因此无需序列化或以任何方式存储。
标签: javascript arrays properties declarative