【问题标题】:how to declare a initialized array in javascript, but also having extra property?如何在 javascript 中声明一个已初始化的数组,但还有额外的属性?
【发布时间】:2022-09-30 15:28:59
【问题描述】:

我有一个这样声明的数组:

var test = [
    \'one\',
    \'two\',
    \'three\',
];

test.extraProperty = \'extra\';

console.log(test);
    console.log(test[0]); // correct, return \'one\'

是否有可能一次声明这个初始化的数组(具有额外的属性)但仍然是一个数组对象?像这样:

var test = [
    \'one\',
    \'two\',
    \'three\',
].extraProperty = \'extra\';
  • 这是可能的,但不是一个好主意。
  • 为什么不?既然可以一开始就添加属性,为什么不能一次这样声明呢?我可能需要有数组派生对象:)
  • 如果你有一个派生数组类,那么像test = new MyArray([1,2,3], \'extra\') 这样的东西会更清楚。

标签: javascript


【解决方案1】:

您可以使用Object.assign

let test = Object.assign([
    'one',
    'two',
    'three',
], {extraProperty: 'extra'});
console.log(test);
console.log(test.extraProperty);

【讨论】:

    【解决方案2】:

    也可以运行

    var test = [
        'one',
        'two',
        'three',
    ];
    test.extraProperty='extra';
    console.log("Execute by .");
    console.log(test);
    console.log(test.extraProperty);
    console.log(" ");
    console.log("Execute as array");
    console.log(test[0]);
    console.log(test[1]);
    console.log(test[2]);
    console.log(test['extraProperty']);

    但你正在尝试的是不可能的, 所以用这种方法。

    【讨论】:

    • 这不正是OP已经拥有的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多