Javascript:直接替换索引与Array.splice()

Kam*_*n J 10 javascript lodash

今天,我遇到了一个问题,即替换对象数组中的匹配对象.

为此,他们使用lodash在对象数组中找到匹配对象的索引.

var users = [{user: "Kamal"}, {user: "Vivek"}, {user: "Guna"}]
var idx = _.findIndex(users, {user: "Vivek"}); // returns 1
Run Code Online (Sandbox Code Playgroud)

现在他们使用splice()代替这样,

users.splice(idx, 1, {user: "Gowtham"})
Run Code Online (Sandbox Code Playgroud)

但为什么不呢,

users[idx] = {user: "Gowtham"};
Run Code Online (Sandbox Code Playgroud)

现在我的问题是,有没有理由,不这样做或使用splice()

因为它使用起来非常简单array[index] = 'something';.不是吗?

jos*_*osh 5

他们这样做的唯一原因是:

  1. 他们也想获得以前的价值
  2. 他们希望通过替换数组中的最后一个元素而不是将其放在-1来“巧妙地”处理idx == -1的情况,因为splice将特别对待负整数。(这似乎不适合您描述的用例)

在大多数情况下,arr[i] = "value";会比arr.splice(i, 1, "value");