Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数组逻辑中对象内部的Javascript更改属性_Javascript_Reactjs_Typescript_React Native_Redux - Fatal编程技术网

数组逻辑中对象内部的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,
        };
    }