【问题标题】:assign javascript array property declaratively以声明方式分配 javascript 数组属性
【发布时间】: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


【解决方案1】:

你可以使用Object.assign:

var a = Object.assign([1, 2, 3, 4], {title: 'profile 1'});

【讨论】:

  • 我希望有更本地的东西(比如赋值':'或'='),但它确实成功了!如果有人可以在不使用方法(甚至是内置方法)的情况下提出解决方案,那就太好了(用于优化),但现在,这是我接受的答案。
  • 您可以使用临时变量和逗号运算符。我会把它添加到帖子中。
  • 检查我的编辑,我无法编辑'CONSTANTS'之外的任何内容
猜你喜欢
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-12
  • 1970-01-01
  • 1970-01-01
  • 2021-02-20
  • 1970-01-01
相关资源
最近更新 更多