'Possible to add a nonArray property key with array literal notation?

Let's say I have an array and then I add a non-array-index object property to it:

let a = [1,2,3];
a['tobey'] = 'marguire';
for (let [idx, elem] of Object.entries(a)) {
    console.log(idx, '==>', elem);
}

Is there a way to do this directly with the literal notation, or does it need to be added separately using only dot/bracket setter notation?I suppose one way might be this, but maybe it doesn't make the intent clear:

let a = {...[1,2,3], tobey: 'maguire'};
for (let [idx, elem] of Object.entries(a)) {
    console.log(idx, '==>', elem);
}


Solution 1:[1]

I don't recommend this, but one way would be the following:

const a = [1,2,3];
Object.defineProperty(a, 'tobey', { value: 'maguire', enumerable: true });

for (let [idx, elem] of Object.entries(a)) {
    console.log(idx, '==>', elem);
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Majed Badawi