我需要首先检查我的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);
}
}
答案 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);
}
},