通过id查找状态对象,如果找到对象,则执行某些操作,如果找不到对象则执行其他操作

时间:2018-03-26 14:24:01

标签: javascript vue.js ecmascript-6 vuex

我需要首先检查我的shippingFees数组(vuex状态)中是否存在具有有效负载ID的对象,如果对象存在,我需要将其替换为有效负载,否则我只需要将有效负载推送到shippingFees数组

现在我在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);
  }
}

1 个答案:

答案 0 :(得分:2)

解决

我使用.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);
  }
},