от
У меня есть эта проблема, которую я пытался решить безрезультатно. В этом массиве массивов, когда два или более цветовых ключа в объектах совпадают с любым другим набором цветовых ключей объектов массива, я хотел бы добавить логический ключ
match
для каждого из этих объектов массива, независимо от того, соответствует ли каждый ключ. Например, два объекта в массивах
data[0][0]
и dk6N6tzxMmK4xGkyRnx3T34jo4 разделяет ключ
color
white
и
black
, так что это
match: true
для всех объектов в
data[0][0]
и
data[0][1]
, но не
data[0][2]
как это имеет только один, поэтому он будет
match: false
. Результат будет выглядеть так:
data = [
  [{
    name: 'car',
    color: 'black',
    group: 0,
    match: true
  },{
    name: 'car',
    color: 'white',
    group: 0,
    match: true
  },{
    name: 'car',
    color: 'blue',
    group: 0,
    match: true
  }],
  [{
    name: 'truck',
    color: 'black'
    group: 1,
    match: true
  },{
    name: 'truck',
    color: 'white',
    group: 1,
    match: true
  },{
    name: 'truck',
    color: 'yellow',
    group: 1,
    match: true
  }],
  [{
    name: 'moto',
    color: 'black',
    group: 2,
    match: false
  },{
    name: 'moto',
    color: 'pink',
    group: 2,
    match: false
  },{
    name: 'moto',
    color: 'orange',
    group: 2,
    match: false
  }]
]

Это маленький образец. Фактические данные имеют сотни массивов, и совпадение должно быть минимум 7              

Пожалуйста, войдите или зарегистрируйтесь для публикации ответа на этот вопрос.

1 Ответ

0 голосов
от
Вы можете вычислить пересечение
colors
в виде массива и сравнить
length
с ожидаемым порогом, чтобы определить значение
match
в ваших результатах.
function match (data, key, filter, transform) {
  const arrays = data.map(
    array =
...