将Symbol属性添加到数组

时间:2018-11-16 21:52:24

标签: javascript node.js es6-symbol

我想向数组中添加一些元数据(例如标签),而不是实际数据。

说我有一个像这样的符号:

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 :(得分:4)

  

我认为这不会破坏任何内容,并且遍历数组时,符号属性将永远不会被击中吗?

是的,无论是迭代还是枚举(您shouldn't do on arrays anyway)都不会命中该符号。访问符号的唯一方法是Object.getOwnPropertySymbols

tweets=[] class listener(StreamListener) : def on_data(self, data): try: tweet = json.loads(data)#['data']# loading tweets from json file #info=tweet.translate(non_bmp_map)#translating print(tweet) tweets.append(tweet) with open('python_tweets.json','a+') as f: #f.write(str(tweet)) json.dump(tweets,f, ensure_ascii=False) return True except KeyError: pass def on_error(self , status): print(status) with open('python_tweets.json','r') as f: line = f.readline() # read only the first tweet/line tweet = json.loads(line) # load it as Python dict print(json.dumps(tweet, indent=4)) # pretty-print` 只是想为调试目的提供帮助。这不是您需要隐藏的东西。