関数内でアンダースコアを使用して配列をソートしようとしています。 'sortBy'というアンダースコアを使用すると、 'orderData'関数に渡される親配列 'list'への参照が失われています。アンダースコア:オブジェクトの配列への参照を失う
'console.log'関数呼び出しの後に、私はソートされた 'リスト'オブジェクトを与えません。私は参照を失うことなく配列をソートできるようにする必要があります。私は何か間違っているのですか?私はこれを行うために使用していた
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