Lodash - DifferenceBy с другой идентичностью

Если вы хотите постоянно перенаправлять вывод, вы можете сделать:

#redirect STDOUT before calling other functions
open STDOUT,'>','outputfile.txt' or die "can't open output";
system('ls;df -h;echo something');  #all will be redirected.
0
задан Caio Kawasaki 16 January 2019 в 14:24
поделиться

2 ответа

Из документации lodash третьим аргументом для differenceBy является

[iteratee=_.identity] (Function): итератор вызывается для каждого элемента.

Исходя из этого, вы можете использовать

var current = [
    {
        id: 1
    },
    {
        id: 2
    },
    {
        id: 3
    },
    {
        id: 4
    }
];

и

var next = [
    {
        conversation_id: 1
    },
    {
        conversation_id: 2
    },
    {
        conversation_id: 4
    }
];

, затем

var difference = _.differenceBy(current, next, function(obj) {
    return obj.id || obj.conversation_id;
});

Или сокращать их с помощью функции стрелки:

var difference = _.differenceBy(current, next, (x) => x.id || x.conversation_id) 
0
ответ дан Jomoos 16 January 2019 в 14:24
поделиться

Я думаю, что вы можете использовать смесь javascript и lodash для решения этой проблемы.

var arrayList = [
  {
    id: 1
  },
  {
    id: 2
  },
  {
    id: 3
  },
  {
    id: 4
  }
];

var conv_array = [
  {
    conversation_id: 1
  },
  {
    conversation_id: 2
  },
  {
    conversation_id: 4
  }
];

var itemsNotInArray = [];

arrayList.filter(function (item) {
    if (!_.find(conv_array, {conversation_id: item.id })) {
      console.log("not in array", item);
      itemsNotInArray.push(item);
    }
});
console.log("result you expected", itemsNotInArray);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

0
ответ дан Avanthika 16 January 2019 в 14:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: