2
我需要將此數組對象的減少Lodash:從陣列中除去連續的重複
[
{id:1, value:'A'},
{id:2, value:'B'},
{id:3, value:'B'},
{id:4, value:'B'},
{id:5, value:'A'},
{id:6, value:'A'},
{id:7, value:'B'}
]
到
[
{id:1, value:'A'},
{id:2, value:'B'},
{id:5, value:'A'},
{id:7, value:'B'}
]
如果連續的對象具有相同的值時,它使第一個和刪除休息。
我目前的解決方案是
var lastValue = undefined;
var result = [];
var propPath = 'value'; // I need later to reference nested props
objects.filter(function(object){
var value = _.at(object, propPath);
if (!_.isEqual(value, lastValue)){
result.push(object);
lastValue = value;
}
});
console.log(result);
我的問題是,作爲Lodash有很多的功能,有沒有更簡單地這樣做的Lodash方式?也許一些預先構建的解決方案不使用幫助變量(lastValue和result)。
這正是我需要的,但lodash [文件](https://lodash.com/docs#拒絕)沒有提到謂詞的第二個參數(索引)。文檔是否過時或者這是非官方的,內部的還是可以改變的? –
所有操作集合的方法都有一個帶三個參數的謂詞:'(value,index | key,collection)'。我猜這只是在'_.reject'文件中丟失,但其他人有這個細節('_.filter','_.map','_.forEach','_.every','_.some',等等)。對於信息,第三個參數'collection'在某些情況下是有用的,例如, '_.filter(_。sortBy(items,'id'),function(item,i,sortedItems){...}'。 –