在数组中交换两个对象:ReactJS

时间:2017-08-31 07:18:27

标签: javascript reactjs

我问自己是否有一种干净,正确的方法可以使用setState交换数组中的两个对象。这就是我目前所做的事情:

export function moveStepUp(index) {
    if(index > 0){
        let currentStep = this.state.stepsData[index];
        let stepAbove = this.state.stepsData[index - 1];

        this.setState((prevState) => ({
            stepsData: prevState.stepsData.map((step, i) => {
                if(i === index - 1)
                    return {
                        ...currentStep,
                        position: i
                    };
                if(i === index)
                    return {
                        ...stepAbove,
                        position: i
                    };

                return step;
            })
        }), () => console.log(this.state.stepsData));
    }
}

此代码正常运行,但我认为可能有更好的解决方案。这样一个简单的任务似乎有太多的代码行。谢谢!

2 个答案:

答案 0 :(得分:3)

如果您知道元素索引,为什么不使用第三个变量简单地交换两个数组值。 首先将数组复制到另一个变量中,交换两个数组值,然后使用this.setState(prevState => { let data = [...prevState.data]; let temp = data[index-1]; data[index-1] = data[index]; data[index] = temp; return { data }; }) 更新状态值。

像这样:

$groupid = Get-AzureADGroup | Where-Object {$_.DisplayName -like "Grp*"}
$useradd = Get-AzureADUser | select userprincipalname,objectid | where {$_.UserPrincipalName -like ‘*PS@*’}
$users = $useradd.objectId
foreach($user in $users){Add-AzureADGroupMember -ObjectId $groupid.ObjectId -RefObjectId $user}

您可以使用任何其他方式创建数组副本,而不是spread operator

答案 1 :(得分:0)

在反应钩子中 您可以使用它,这对我有用

fallback to default value