javascript中lodash里sortby之后的object和原object有什么联系?
木瓜~ 2017-05-27 10:07:08 我有下面这个函数,先对输入object进行排序,然后对最小的加true标签,其他的加false标签。
我也是稀里糊涂的就实现了这个功能, 但是实在没有明白为什么。
根据打印,lodash 的sortBy之后的结果和原来的obj是完全不一样的,而我的更改是基于sortby之后的结果,为什么obj也跟着变化了?
希望某位知道原因的大神帮忙解惑下?
function test(obj,key) {
console.log("obj_orig======\n%j", obj);
console.log("obj_sortby=====\n%j", _.sortBy(obj, ['age', 'user']));
console.log("obj_after_sortby=====\n%j", obj);
_.sortBy(obj, ['age', 'user']).forEach(function(d, i) { d[key] = (0===i) ? true : false;});
console.log("after_change====\n%j", obj);
}
var users = [
{ 'user': 'Halen', 'age': 48 },
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 },
{ 'user': 'Jack', 'age': 34 }
];
test(users ,"zzz");
运行结果输出==========================
obj_orig======
[{"user":"Halen","age":48},{"user":"barney","age":36},{"user":"fred","age":40},{"user":"Jack","age":34}]
obj_sortby=====
[{"user":"Jack","age":34},{"user":"barney","age":36},{"user":"fred","age":40},{"user":"Halen","age":48}]
obj_after_sortby=====
[{"user":"Halen","age":48},{"user":"barney","age":36},{"user":"fred","age":40},{"user":"Jack","age":34}]
after_change====
[{"user":"Halen","age":48,"zzz":false},{"user":"barney","age":36,"zzz":false},{"user":"fred","age":40,"zzz":false},{"user":"Jack","age":34,"zzz":true}]