You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS遍历对象数组替换属性、分配座位并标记影票不可用的简洁方案

座位分配后自动标记电影票为不可用的实现方案

核心逻辑

你当前的代码问题是仅读取了可用票的座位号,没有修改对应票的状态,导致后续分配永远会拿到同一张座位。由于Array.find返回的是数组中对象的引用,直接修改该对象的status属性就会同步生效到原movieTickets数组,不需要额外遍历处理,是最简洁的实现方式。

原生JS最简实现

const movieTickets = [
  {
    seat: "16B",
    status: "available"
  },
  {
    seat: "16c",
    status: "available"
  },
  {
    seat: "16D",
    status: "available"
  }
]

const people = [
   { 
     name: "Bob",
     seat: ""
   },
   { 
     name: "Susan",
     seat: ""
   },
   { 
     name: "Timmy",
     seat: ""
   }
]

const assignedPeople = people.map(person => {
  const availableTicket = movieTickets.find(ticket => ticket.status === "available")
  // 可选边界处理:座位不足时抛出提示
  if (!availableTicket) throw new Error('当前无可用座位')
  person.seat = availableTicket.seat
  // 直接标记为不可用,改动同步到原电影票数组
  availableTicket.status = "unavailable"
  return person
})

Lodash 版本实现

如果要使用lodash,可以用_.find简化查找逻辑,整体逻辑和原生实现一致:

const assignedPeople = people.map(person => {
  // 用lodash的find匹配属性更简洁
  const availableTicket = _.find(movieTickets, { status: "available" })
  if (!availableTicket) throw new Error('当前无可用座位')
  person.seat = availableTicket.seat
  availableTicket.status = "unavailable"
  return person
})

结果验证

分配完成后打印movieTickets,所有已分配的票status都会自动更新为unavailable,符合需求。


内容的提问来源于stack exchange,提问作者Ash Rhazaly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:18:00