Условия Lodash "uniqBy" для уменьшения значений дублированного массива - PullRequest
0 голосов
/ 22 января 2019

Итак, у меня есть коллекция массивов в этом формате.

var innitialArray = [
[0:"Hello", 1:"World", 3: "Wow", 4:"I WANT MORE"],
[0:"Hello", 1:"World", 3: "Wow", 4:"MORE I WANT"],
[0:"Meow", 1:"World", 3: "Wow", 4:"MORE I WANT"],
[0:"Meow", 1:"World", 3: "Wow", 4:"I WANT MORE"]
];

Я пытался использовать метод loadash _.uniqBy, используя этот код.

let uniq_ws_data = _.uniqBy(ws_data_initial, function (e) {
return e[0];
});

ЧтоЯ получаю с кодом выше, этот массив:

var uniq_ws_data = [
[0:"Hello", 1:"World", 3: "Wow", 4:"I WANT MORE"],
[0:"Meow", 1:"World", 3: "Wow", 4:"I WANT MORE"],
];

Но мой ожидаемый результат должен быть следующим:

var uniq_ws_data = [
[0:"Hello", 1:"World", 3: "Wow", 4:"I WANT MORE"],
[0:"Meow", 1:"World", 3: "Wow", 4:"MORE I WANT"],
];

Также пытался изменить return e[0] to e[4], но я получил этовместо этого:

var uniq_ws_data = [
[0:"Hello", 1:"World", 3: "Wow", 4:"I WANT MORE"],
[0:"Hello", 1:"World", 3: "Wow", 4:"MORE I WANT"],
];

Есть ли способ достичь ожидаемого результата?

Используемый код:

let uniq_ws_data = _.uniqBy(ws_data_initial, function (e) {
return e[0];
});

Ожидаемый результат:

var uniq_ws_data = [
[0:"Hello", 1:"World", 3: "Wow", 4:"I WANT MORE"],
[0:"Meow", 1:"World", 3: "Wow", 4:"MORE I WANT"],
];

1 Ответ

0 голосов
/ 22 января 2019

Понятия не имею, как вам удалось запустить этот код, но он синтаксически некорректен. Я предполагаю, что вы хотели, чтобы initialArray был массивом массивов.

Рабочий пример:

const initialArray = [
  ["Hello", "World", "Wow", "I WANT MORE"],
  ["Hello", "World", "Wow", "MORE I WANT"],
  ["Meow", "World", "Wow", "MORE I WANT"],
  ["Meow", "World", "Wow", "I WANT MORE"]
];

const result = _.uniqBy(initialArray, _.first);

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
...