我使用具有此数据集的node.js和discord.js为抽奖系统制作了一个数组。
[{"author":"Name","rafflename":"RAFFLE","amount":"10","entries":"[]"}]
当有人尝试输入抽奖券时,我想在entries
标签内创建另一个JSON数组。
我面临的问题是我使用raffles[0].entries.push({ 'username': 'example', 'user_id': '1' });
它返回错误:raffles[0].entries.push is not a function
我认为这是因为它正在寻找不存在的数组raffles[0].entries.push
。但是我只使用过push命令。因此,我不确定如何解决此问题。
答案 0 :(得分:1)
将条目[]移至双引号之外,即使用“条目”:[]
您正在尝试推送到字符串而不是数组
答案 1 :(得分:0)
您必须先将条目强制转换为Array。
const raffles = [{"author":"Name","rafflename":"RAFFLE","amount":"10","entries":"[]"}]
// cast entries to Array
raffles[0].entries = JSON.parse(raffles[0].entries)
// now you can push them
raffles[0].entries.push('test')
console.log(raffles)
答案 2 :(得分:0)
它不起作用,因为对象内部的属性周围带有“”。您可以通过删除“”或执行以下操作来解决此问题:
raffles[0]['entries'].push(//your code here);
当对象的属性是字符串时(即,当它们周围带有引号时),您必须使用“点符号”来访问该属性。
例如:
var object = {"property":"five"};
console.log(object["property"]); //prints 'five'
console.log(object.property); //throws an error
答案 3 :(得分:0)
根据@Bibberty注释格式化数组并执行操作
raffles=rafale=[{"author":"Name","rafflename":"RAFFLE","amount":10,"entries":[]}]
raffles[0].entries.push({ 'username': 'example', 'user_id': 1 });
console.log(raffles)