JS Filter массив массивов - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь отфильтровать массив массивов.

Я искал ответ по SO, но все вопросы, на которые я отвечал, не совпадают с моими (массив объектов или простой массивне вложенный или не того же формата и т. д.)

enter image description here

Как только значения сохранены в массиве, они выглядят следующим образом:

[[Paris, One ONE, Boss, Wed Mar 01 00:00:00 GMT+01:00 2017, ], [Paris, Two TWO, Temp, Sat Jul 01 00:00:00 GMT+02:00 2017, ], [Paris, Three THREE, Employee, Sat Sep 01 00:00:00 GMT+02:00 2018, ], [Paris, Four FOUR, Intern, Thu Nov 01 00:00:00 GMT+01:00 2018, ], [Paris, Five FIVE, N.A., Sat Dec 01 00:00:00 GMT+01:00 2018, ], [Paris, Six SIX, Director, Tue Jan 01 00:00:00 GMT+01:00 2019, ], [Paris, Seven SEVEN, Director, Fri Jan 01 00:00:00 GMT+01:00 2016, Sun Jul 01 00:00:00 GMT+02:00 2018], [Paris, Eight EIGHT, Director, Fri Jan 01 00:00:00 GMT+01:00 2016, Sun Oct 01 00:00:00 GMT+02:00 2017], [Paris, Nine NINE, N.A., Thu Nov 01 00:00:00 GMT+01:00 2018, Sat Dec 01 00:00:00 GMT+01:00 2018], [London, Ten TEN, Employee, Fri Jan 01 00:00:00 GMT+01:00 2016, Mon Oct 01 00:00:00 GMT+02:00 2018], [London, Eleven ELEVEN, Intern, Mon Feb 01 00:00:00 GMT+01:00 2016, Mon Jan 01 00:00:00 GMT+01:00 2018], [London, Twelve TWELVE, Employee, Sun May 01 00:00:00 GMT+02:00 2016, Sun Oct 01 00:00:00 GMT+02:00 2017]]

Я хотел бы иметь возможность фильтровать этот массив массивов и сохранять данные, связанные только с одним сообществом, например, с Парижем.

Как бы я это сделал?

Большое спасибо за вашу помощь

Ответы [ 5 ]

0 голосов
/ 12 февраля 2019

const country = [
  ["Paris", "One ONE, Boss, Wed Mar 01 00: 00: 00 GMT + 01: 00 2017", ],
  ["Paris", "Two TWO, Temp, Sat Jul 01 00: 00: 00 GMT + 02: 00 2017", ],
  ["Paris", "Three THREE, Employee, Sat Sep 01 00: 00: 00 GMT + 02: 00 2018", ],
  ["Paris", "Four FOUR, Intern, Thu Nov 01 00: 00: 00 GMT + 01: 00 2018", ],
  ["Paris", "Five FIVE, N.A., Sat Dec 01 00: 00: 00 GMT + 01: 00 2018", ],
  ["Paris, Seven SEVEN, Director, Fri Jan 01 00: 00: 00 GMT + 01: 00 2016, Sun Jul 01 00: 00: 00 GMT + 02: 00 2018"],
  ["London", "Twelve TWELVE, Employee, Sun May 01 00: 00: 00 GMT + 02: 00 2016", "Sun Oct 01 00: 00: 00 GMT + 02: 00 2017"]
]

const res = country.filter(([ville, b, c]) => ville === "Paris")


console.log(res)
0 голосов
/ 12 февраля 2019

Я преобразовал ваш массив в массив JavaScript.И фильтр будет сделан так:

var myArray = [['Paris', 'One ONE', 'Boss', 'Wed Mar 01 00:00:00 GMT+01:00 2017'],['Paris', 'Two TWO', 'Temp', 'Sat Jul 01 00:00:00 GMT+02:00 2017'],['Paris', 'Three THREE', 'Employee', 'Sat Sep 01 00:00:00 GMT+02:00 2018'],['Paris', 'Four FOUR', 'Intern', 'Thu Nov 01 00:00:00 GMT+01:00 2018'],['Paris', 'Five FIVE', 'N.A.', 'Sat Dec 01 00:00:00 GMT+01:00 2018'],['Paris', 'Six SIX', 'Director', 'Tue Jan 01 00:00:00 GMT+01:00 2019'],['Paris', 'Seven SEVEN', 'Director', 'Fri Jan 01 00:00:00 GMT+01:00 2016', 'Sun Jul 01 00:00:00 GMT+02:00 2018'],['Paris', 'Eight EIGHT', 'Director', 'Fri Jan 01 00:00:00 GMT+01:00 2016', 'Sun Oct 01 00:00:00 GMT+02:00 2017'],['Paris', 'Nine NINE', 'N.A.', 'Thu Nov 01 00:00:00 GMT+01:00 2018', 'Sat Dec 01 00:00:00 GMT+01:00 2018'],['London', 'Ten TEN', 'Employee', 'Fri Jan 01 00:00:00 GMT+01:00 2016', 'Mon Oct 01 00:00:00 GMT+02:00 2018'],['London', 'Eleven ELEVEN', 'Intern', 'Mon Feb 01 00:00:00 GMT+01:00 2016', 'Mon Jan 01 00:00:00 GMT+01:00 2018'],['London', 'Twelve TWELVE', 'Employee', 'Sun May 01 00:00:00 GMT+02:00 2016', 'Sun Oct 01 00:00:00 GMT+02:00 2017']]

var filteredArray = myArray.filter(function (item){
	return item[0] == 'Paris'
})

console.log(filteredArray)
0 голосов
/ 12 февраля 2019

Эта функция фильтрует элементы lst, которые являются списками.Он сравнивает первый элемент каждого списка (который является названием города в вашем примере) и возвращает true, если и только если он равен «Парижу».

Это делает неявное предположение, что структура innerLst делаетне изменить.Если название города перемещается в другой индекс, то решение Larz учитывает это.

lst.filter(innerLst => innerLst[0] === 'Paris')
0 голосов
/ 12 февраля 2019

вы можете использовать Array.filter, что-то вроде этого:

const data = [
['Paris', 'One ONE', 'Boss', 'Wed Mar 01 00:00:00 GMT+01:00 2017' ],
['Paris', 'Two TWO', 'Temp', 'Sat Jul 01 00:00:00 GMT+02:00 2017' ],
['London', 'Three THREE', 'Employee, Sat Sep 01 00:00:00 GMT+02:00 2018' ]];

const result = data.filter(function(item) { return item[0]==='Paris'});
// const result = data.filter(item => item[0]==='Paris'); // ES6
console.log(result);
0 голосов
/ 12 февраля 2019

Предполагая, что все элементы в ваших массивах Strings, вы просто проверяете, что каждый массив в вашем массиве массивов содержит элемент Paris.

const yourArray = [
  ['Paris', 'one One', 'whatever else'],
  ['Paris', 'one One', 'whatever else'],
  ['Paris', 'one One', 'whatever else'],
  ['Paris', 'one One', 'whatever else'],
  ['London', 'one One', 'whatever else'],
]

const onlyParis = yourArray.filter(function(array) {
  return array.includes('Paris')
})

console.log(onlyParis)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...