Javascript TypeError:无法读取属性';id';映射到两个数组时的未定义值

Javascript TypeError:无法读取属性';id';映射到两个数组时的未定义值,javascript,reactjs,Javascript,Reactjs,每次使用useffect()钩子加载主页时,我都会尝试加载4个随机城市,并减去已找到的项目以避免重复,因此我编写了以下函数: const cities = [ { id: "0", name: "New York" }, { id: "1", name: "California" }, { id: "2", name: "Tokyo" }, { id: &quo

每次使用useffect()钩子加载主页时,我都会尝试加载4个随机城市,并减去已找到的项目以避免重复,因此我编写了以下函数:

const cities = [
  { id: "0", name: "New York" },
  { id: "1", name: "California" },
  { id: "2", name: "Tokyo" },
  { id: "3", name: "Paris" },
  { id: "4", name: "Oran" },
  { id: "5", name: "roma" },
  { id: "6", name: "dubai" },
  { id: "7", name: "madrid" },
  { id: "8", name: "beijing" },
  { id: "9", name: "montreal" }
];

const randomCitiesLoader = () => {
  let randomCities = [];
  randomCities.push(cities[Math.floor(Math.random() * cities.length - 1)]);
  for (let i = 0; i < 3; i++) {
    let queryCities = cities.filter(city => {
      return !randomCities.find(item => {
        return item.id === city.id;
      });
    });
    randomCities.push(
      queryCities[Math.floor(Math.random() * queryCities.length - 1)]
    );
  }
  return randomCities;
};
const cities=[
{id:“0”,名称:“纽约”},
{id:“1”,名字:“California”},
{id:“2”,名字:“东京”},
{id:“3”,名字:“巴黎”},
{id:“4”,名字:“Oran”},
{id:“5”,姓名:“roma”},
{id:“6”,名字:“迪拜”},
{id:“7”,名字:“马德里”},
{id:“8”,名字:“北京”},
{id:“9”,姓名:“蒙特利尔”}
];
const randomCitiesLoader=()=>{
让随机城市=[];
randomCities.push(cities[Math.floor(Math.random()*cities.length-1)];
for(设i=0;i<3;i++){
让queryCities=cities.filter(city=>{
return!randomCities.find(项目=>{
return item.id==city.id;
});
});
推(
queryCities[Math.floor(Math.random()*queryCities.length-1)]
);
}
回归城市;
};
但我得到了一个错误:

有人能帮忙吗

Math.floor(Math.random()*cities.length-1)
可以是-1,这样你就可以把
未定义的
推到结果数组中,因为
城市[-1]
未定义的


您最好的选择是使用
array[Math.floor(Math.random()*array.length)]
从数组中拾取随机元素。

您是否尝试将
记录在
查找
中?也许这会给你一个线索,谢谢。以重复的方式结束此问题。