我有以下Json,用于生成轮盘元素。
var elements=[
{
'fillStyle': '#0B4B61',
'text': 'I',
'textFontSize': 14
},
{
'fillStyle': '#4FC3EA',
'text': 'R',
'textFontSize': 14
},
{
'fillStyle': '#EEA513',
'text': 'T',
'textFontSize': 14
},
{
'fillStyle': '#F5F103',
'text': 'U',
'textFontSize': 14
},
{
'fillStyle': '#99F30F',
'text': 'S',
'textFontSize': 12
}
];
转动轮盘后,例如,如果U作为赢家出来,我想将其从JSON中删除。在这种情况下,JSON如下所示:
var elements=[
{
'fillStyle': '#0B4B61',
'text': 'I',
'textFontSize': 14
},
{
'fillStyle': '#4FC3EA',
'text': 'R',
'textFontSize': 14
},
{
'fillStyle': '#EEA513',
'text': 'T',
'textFontSize': 14
},
{
'fillStyle': '#99F30F',
'text': 'S',
'textFontSize': 12
}
];
因此,当您重新构建轮盘时,将不再输出较早发出的字母。
我遇到的问题是有时会出现错误:TypeError:无法读取未定义的属性'text'。通常在运行某个接头后会发生这种情况。
我想做的是,例如,如果随机值为1,则仅删除json的第一个元素。如果出现3,则仅从json中删除项目3。我必须消除1中的1,具体取决于随机出现的位置。我必须这样做,以便轮盘中已经出现的元素不再重复。直到json没有任何元素为止。
感谢您的帮助。
作为示例,我留下的代码如下:
var elements = [{
'fillStyle': '#0B4B61',
'text': 'I',
'textFontSize': 14
},
{
'fillStyle': '#4FC3EA',
'text': 'R',
'textFontSize': 14
},
{
'fillStyle': '#EEA513',
'text': 'T',
'textFontSize': 14
},
{
'fillStyle': '#F5F103',
'text': 'U',
'textFontSize': 14
},
{
'fillStyle': '#99F30F',
'text': 'S',
'textFontSize': 12
}
];
function deleteElement(){
//json random position is generated
var random = Math.floor(Math.random()*elements.length);
//the json is traversed until it finds a coincidence with the randomly generated position
$.each(elements, function (i, item) {
if (item.text == elements[random].text){
console.log(item.text);
//if the match is found, that element of the json is removed
elements.splice(random,random);
}
});
console.log(elements);
}
$("#btn").click(function(){
deleteElement();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button type="button" id="btn">Click Me!</button>