通过 id 查找状态中的对象,如果找到对象就做某事,如果找不到对象就做其他事情

Find object in state by id, if object found do something, if object not found do something else

我需要先检查我的 shippingFees 数组(vuex 状态)中是否存在带有 payload ID 的对象,如果该对象存在我需要用 payload 替换它,否则我只需要将 payload 推送到运费数组。

现在我正在遍历 shippingFees 中的每个对象,但它不会先检查对象是否存在,如果 ID 不匹配,它只会将对象推送到数组中。我该如何检查如果具有ID的对象首先存在于数组中并执行某些操作,然后如果它不存在则执行其他操作? :)

SET_SHIPPING_FEES: (state, payload) => {
  if (state.shippingFees.length > 0) {
    for (let i = 0; i < state.shippingFees.length; i += 1) {
      if (state.shippingFees[i].id === payload.id) {
        state.shippingFees.splice(i, 1);
        state.shippingFees.push(payload);
      } else {
        state.shippingFees.push(payload);
      }
    }
  } else {
    state.shippingFees.push(payload);
  }
}

已解决

我用.some()方法解决了问题

这是我使用的代码:

SET_SHIPPING_FEES: (state, payload) => {
   if (state.shippingFees.length > 0) {
     const shippingFeeDoesExist = state.shippingFees.some(fee => fee.id === 
     payload.id);

     if (shippingFeeDoesExist) {
      for (let i = 0; i < state.shippingFees.length; i += 1) {
        if (state.shippingFees[i].id === payload.id) {
          state.shippingFees.splice(i, 1, payload);
        }
      }
    } else {
      state.shippingFees.push(payload);
    }
  } else {
    state.shippingFees.push(payload);
  }
},