【问题标题】:Good way to update each item in an array inside a store更新商店内数组中每个项目的好方法
【发布时间】:2020-10-18 21:45:07
【问题描述】:

我在 Svelte 的数据存储中有一组对象,我想更新数组中每个对象的一个​​属性,即我想将我存储中数组中的 author 属性更新为当前用户名,这就是我目前正在做的事情:

let tempArray = $myReviewDataStore;
for(var i=0; i < tempArray.length; i++){
    tempArray[i].author = username;
}
myReviewDataStore.update(data =>{
    return tempArray;
})

一定有更好的方法来做到这一点,对吧?

谢谢!

【问题讨论】:

  • 也许是 Array.forEach 或 Array.map ?不过,我不确定他们会变得更好。我想这取决于您对“更好”的定义。你已经拥有的 for 循环有什么问题?

标签: svelte svelte-3 svelte-store


【解决方案1】:

这只是一种更短的方法:

$myReviewDataStore = $myReviewDataStore.map(
 obj => ({...obj, author: username})
);

【讨论】:

    【解决方案2】:

    嗯,我猜你真的不需要逻辑的第一部分,因为 data 属性包含 store value

    update 是一种接受一个参数的方法,该参数是一个回调。回调将现有的存储值作为其参数,并返回要设置到存储的新值。

    所以你可以缩短它:

    myReviewDataStore.update(data => data.map(state => ({...state, author: username }) ));
    

    【讨论】:

      猜你喜欢
      • 2019-10-24
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 2016-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多