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

Vue JS中如何引用嵌套对象Ref的值并设置验证后的单个Plot数据?

解决方案

先修正你代码里的小笔误:model中的属性应该是plots(和你后续调用的model.plots.value对应),修正后的定义如下:

interface Plot {
  length: number,
  width: number,
  acreage: number
}
const model = {
   plots: ref<Plot[]>([]),
}

下面提供两种满足你需求的实现方式:

方式1:过滤后直接赋值(高效简洁)

先通过数组filter方法筛选出length、width、acreage均存在(非undefined/null)的项,再直接赋值给ref数组:

// 调用接口获取数据
const fetchedPlots = await yourApiFunction();

// 过滤有效数据
const validPlots = fetchedPlots.filter(plot => 
  plot.length != null && plot.width != null && plot.acreage != null
);

// 赋值给ref数组
model.plots.value = validPlots;

注:!= null等价于!== undefined && !== null,可以简化判断逻辑。

方式2:循环逐个添加(按需处理单条数据)

如果需要对每条数据做额外处理再添加,可通过循环遍历,满足条件的项才推入ref数组:

const fetchedPlots = await yourApiFunction();

// 可选:清空原有数据(根据业务需求决定是否保留)
model.plots.value = [];

// 循环处理每条plot
for (const plot of fetchedPlots) {
  if (plot.length != null && plot.width != null && plot.acreage != null) {
    // 可在这里对单条plot做额外逻辑处理
    // ...
    
    // 将有效数据推入ref数组
    model.plots.value.push(plot);
  }
}

如果需要单独修改数组中某一条Plot的数据,直接通过索引操作即可(Vue会自动响应数组变化):

// 修改某条plot的属性
if (model.plots.value[0]) {
  model.plots.value[0].length = 15;
}

// 直接替换整条plot对象
model.plots.value[1] = { length: 20, width: 30, acreage: 600 };

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:15:49