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

时间:2015-09-12 20:36:37

标签: javascript lodash

今天,我遇到一个SO question来替换对象数组中的匹配对象。

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

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

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

users.splice(idx, 1, {user: "Gowtham"})

但为什么不呢,

users[idx] = {user: "Gowtham"};

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

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

1 个答案:

答案 0 :(得分:3)

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

  1. 他们也希望获得之前的价值
  2. 他们想要聪明地'通过替换数组中的最后一个元素来处理idx == -1的情况,而不是将其置于-1,因为splice将专门处理负整数。 (这似乎不适合你描述的用例)
  3. 在大多数情况下,arr[i] = "value";会优于arr.splice(i, 1, "value");