数组逻辑中对象内部的Javascript更改属性
此代码在返回的对象中返回一个数组数组逻辑中对象内部的Javascript更改属性,javascript,reactjs,typescript,react-native,redux,Javascript,Reactjs,Typescript,React Native,Redux,此代码在返回的对象中返回一个数组cartItems,但问题是其中一个数组元素是undefined,如:[{first object},undefined,{third object}] 不需要未定义的元素。我知道它来自于newOrders[action.itemIndex]的一个作业,但我不知道如何找到它。我发现有两种方法可以解决这个问题: (1) 确保未将未定义的对象插入数组。您可以通过一个简单的(object==null)检查来实现这一点。这将捕获空的和未定义的对象 (2) 过滤掉未定义的对
cartItems
,但问题是其中一个数组元素是undefined
,如:[{first object},undefined,{third object}]
不需要
未定义的元素。我知道它来自于newOrders[action.itemIndex]
的一个作业,但我不知道如何找到它。我发现有两种方法可以解决这个问题:
(1) 确保未将未定义的对象插入数组。您可以通过一个简单的(object==null)
检查来实现这一点。这将捕获空的和未定义的对象
(2) 过滤掉未定义的对象,例如,cartArray=cartArray.Filter(item=>item!=null)
请添加一些标点符号好吗?另外,你能明确地说明你的问题吗?什么是状态
?请上传你的可执行代码!常量初始状态={cartItems:[]};这是我使用的状态,这是动作分派(CartActions.addToCart(newOrder,direction,itemIndex))我只想离开,不使用索引和使用id的代替是的,我确信对象是有价值的,永远不要使用未定义的对象。整个问题在于索引如果我有另一种方法来更改对象属性而不是使用索引,我会比每次筛选cartArray做得更好。filter(item=>item!=null)
case ActionTypes.ADD_TO_CART: {
var newOrders = state.cartItems.slice();
let updatedIem = state.cartItems.find(i => {
if (i.id === action.product.id) {
return action.product
}
else {
return null
}
});
if (updatedIem) {
var oldOrder = newOrders[action.itemIndex];
var newOrder = Object.assign({}, oldOrder);
if (action.direction == 1 && newOrder.quantity > 0) {
newOrder.qty++;
newOrder.quantity--;
}
else if (action.direction == -1 && newOrder.qty != 0 && newOrder.quantity > 0) {
newOrder.qty--;
newOrder.quantity++;
}
else null
newOrders[action.itemIndex] = newOrder;
}
else {
newOrders[action.itemIndex] = action.product
}
return {
...state,
cartItems: newOrders,
};
}