我想在函數內使用下劃線對數組進行排序。在使用下劃線'sortBy'時,我失去了傳遞給'orderData'函數的父數組'list'的引用。下劃線:失去對象數組的引用
'console.log'函數調用後沒有給我排序的'list'對象。我需要能夠排序數組而不會丟失參考。難道我做錯了什麼?我用的是要做到這一點
function orderData(data, testObj) {
data = _.chain(data)
.sortBy(function(item) {
return new Date(item.dt).getTime();
}).sortBy('text').value();
testObj.x = "updated";
console.log(data, testObj);
}
var list = [
{id: 3,dt: new Date('8/1/17'),text: 'a'},
{id: 1,dt: new Date('5/1/17'),text: 'a'},
{id: 4,dt: new Date('5/1/17'),text: 'b'},
{id: 2,dt: new Date('5/10/17'),text: 'a'}];
var testObj = {
x: "Start"
};
//console.log(list,testObj);
orderData(list, testObj);
console.log(list, testObj);
小提琴: https://jsfiddle.net/9zo3qnej/1/
PS:我是新手,以強調和也的JavaScript。
在這種情況下,究竟是「父對象」? – adeneo
'list'數組來自函數外部。 –
是的,你正在修改它的功能?如果你想保持函數不在函數之外,你必須在函數內部做一個深層拷貝,並且**返回**那個拷貝來代替? – adeneo