我想向数组中添加一些元数据(例如标签),而不是实际数据。
说我有一个像这样的符号:
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
答案 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`
只是想为调试目的提供帮助。这不是您需要隐藏的东西。