我希望能找到一种方法将一个对象移动到数组的最后
我有一个对象数组:
[{"id":"4","name":"Boaz"},{"id":"2","name":"Shareen"},{"id":"3","name":"Simon"},{"id":"1","name":"Miriam"}]
假设我有一个id:3或位置:2。我想将整个集合{"id":"3","name":"Simon"}移动到所有内容的末尾。我已经尝试了很多方法,并查找了很多资料,但我无法使其工作。
我希望能找到一种方法将一个对象移动到数组的最后
我有一个对象数组:
[{"id":"4","name":"Boaz"},{"id":"2","name":"Shareen"},{"id":"3","name":"Simon"},{"id":"1","name":"Miriam"}]
splice
,然后使用 concat
来移除你想要的对象:var array = [{"id":"4","name":"Boaz"},{"id":"2","name":"Shareen"},{"id":"3","name":"Simon"},{"id":"1","name":"Miriam"}];
var itemToReplace = array.splice(0, 1); // 0 is the item index, 1 is the count of items you want to remove.
// => [{"id":"4","name":"Boaz"}]
array = array.concat(itemToReplace);
或者更简单的说:
array = array.concat(array.splice(0, 1));
顺便一提:这是一个对象数组,而不是一个数组对象。
array = array.concat(itemToReplace);
。我会编辑我的答案来涵盖这一点。 - danguilhermevar arr = [{"id":"4","name":"Boaz"},{"id":"2","name":"Shareen"},{"id":"3","name":"Simon"},{"id":"1","name":"Miriam"}];
// Consider need move arr[2] to the end
var removed = arr.splice(2,1);
var new_arr = arr.concat(removed);
.push()
而不是.concat()
来改变原始数据。 - cookie monster.push()
方法会将被移除的元素作为一个数组添加,而不是添加这些元素本身。在这种情况下,它只有一个元素的数组,但是使用 .concat()
仍然是最好的选择,而不是使用 .push(removed[0])
并且有可能在原始数组中添加一个 "undefined" 字符串。 - danguilherme.concat
不会改变原始数组,所以现在有两个不同的数组。即使他覆盖了arr
变量,仍然可能存在其他引用原始数据的陈旧数据。这就是为什么应该使用.push()
。自然需要提取正确的元素,或者只需使用arr.push.apply(arr, removed);
。 - cookie monster
.prototype
上放置了一个新函数,而其他答案则没有。数组中的对象唯一会产生影响的方式是如果你不知道如何从对象中获取属性。对于初学者来说,只需要简单的问题解决技巧即可完成此操作。 - cookie monster