Добавить свойство Symbol в массив - PullRequest
0 голосов
/ 17 ноября 2018

Я хочу добавить некоторые метаданные в массив, например тег, но не фактические данные.

Скажем, у меня есть такой символ:

const s = Symbol('foo')

Скажем, я объявляю массив какИтак:

const v = [1,2,3];

Есть ли хороший способ пометить массив с символом?Очевидно, что добавление его в качестве свойства может сработать:

v[s] = true;

Я предполагаю, что это ничего не нарушит, и когда массив будет пройден, свойство символа никогда не будет затронуто?Не знаю!

Обновление : когда я делаю это:

console.log(v);

Я получаю:

[ 1, 2, 3, [Symbol(foo)]: true ]

, но когда я делаю:

v.forEach(x => console.log(x));

Я просто получаю:

1
2
3

1 Ответ

0 голосов
/ 17 ноября 2018

Я предполагаю, что это ничего не сломает, и когда массив будет пройден, свойство символа никогда не будет изменено?

Да, ни итерация, ни перечисление (что вы не должны делать с массивами в любом случае ) не попадут в символ. Единственный способ получить доступ к символу - Object.getOwnPropertySymbols.

console.log просто пытается помочь в целях отладки. Это не то, от чего вам нужно было бы прятаться.

...