提问者:小点点

按类别长度返回随机json对象


我有一个JSON数组,其中包含不同语言的单词,我想要随机报警。 问题是,我在每种语言中有不同数量的单词,因此当我使用下面的代码时,我在某些情况下会得到undefined(因为某些单词比其他单词具有更多的语言,因此长度属性比它应该具有的更长)。

我曾尝试在第2行末尾使用all.french.length,但得到一个错误。 有人知道我该怎么做吗?

谢啦!

null

all = [{"english":"cat", "french":"chat"}, {"english":"dog"}]
let z = Math.floor(Math.random() * all.length);
alert('random: ' + all[z].french);

null

编辑:我只想让它只警告我在第3行中定义的语言中的单词。 在这种情况下,我想只显示法语单词:只提醒“聊天”一次又一次。 我的单词原始数据当然比那个大,而且有更多的语言,所以我不能用0。


共2个答案

匿名用户

如果您只想要一个存在翻译法语的随机元素,您可以过滤您的数组

const filteredArray = all.filter(element => 
    element.french === "" || element.french);
let z = Math.floor(Math.random() * filteredArray.length);
alert('random: ' + filteredArray[z].french);

匿名用户

您可以这样做:

null

const  all = [{"english":"cat", "french":"chat"}, {"english":"dog"}]

function myAlert(lang)
  {
  let arr = all.filter( e=>!!e[lang])
    , z   = Math.floor(Math.random() * arr.length)
    ;
  alert('random: ' + arr[z][lang] )
  }

myAlert('french')

myAlert('english')