删除JSON中的元素

时间:2019-08-23 15:32:43

标签: javascript jquery json

我有以下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>

0 个答案:

没有答案