как найти значение, относящееся к какому массиву (например, массив a, массив b) после случайного хранения в другом массиве - PullRequest
2 голосов
/ 16 мая 2019

У меня есть два разных типа массивов, и я выбрал несколько случайных значений из двух разных массивов и сохранил их в другом массиве, как я могу найти, какие значения относятся к какому массиву

пример ....

var firstDbArray=[1,2,7,9,3,4,0,6,5,10]
var secondDbArray=[1,2,9,7,0,4,8,11,15,30,10,12]

var uniquefromtwoarrays= [];

  for (var i = 0; i < this.firstDbArray.length; i++) {
    if (this.secondDbArray.indexOf(this.firstDbArray[i]) === -1) {
      uniquefromtwoarrays.push(this.firstDbArray[i]);
    }
  }
  for (i = 0; i < this.secondDbArray.length; i++) {
    if (this.firstDbArray.indexOf(this.secondDbArray[i]) === -1) {
      uniquefromtwoarrays.push(this.secondDbArray[i]);
    }
  }

вывод уникальных из двух массивов ----> [3,6,5,8,11,15,30,12]

мой вопрос ----> какМогу ли я найти, какое значение из какого массива в этом выводе.

Ответы [ 4 ]

0 голосов
/ 19 июня 2019

Думаю, этот маленький фрагмент поможет вам ....

if ( secondDbArray.indexOf(uniquefromtwoarrays[i] === -1 ) 
 // uniquefromtwoarrays[i] related to the first array
else 
// uniquefromtwoarrays[i] related to the second array
0 голосов
/ 16 мая 2019

Примерно так:

var firstDbArray=[1,2,7,9,3,4,0,6,5,10]
var secondDbArray=[1,2,9,7,0,4,8,11,15,30,10,12]

var uniquefromtwoarrays= [];

//create a new array were will be store the origin of the value
var uniqueArrayOrigin = [];

  for (var i = 0; i < this.firstDbArray.length; i++) {
    if (this.secondDbArray.indexOf(this.firstDbArray[i]) === -1) {
      //each time you push a new value to the array of unique values,
      //push to the new array of origins the value origins
      uniquefromtwoarrays.push(this.firstDbArray[i]);
      uniqueArrayOrigin.push(0);
    }
  }
  for (i = 0; i < this.secondDbArray.length; i++) {
    if (this.firstDbArray.indexOf(this.secondDbArray[i]) === -1) {
      uniquefromtwoarrays.push(this.secondDbArray[i]);
      uniqueArrayOrigin.push(1);
    }
  }
  
for(i = 0; i<uniquefromtwoarrays.length; i++) {
 //Then, you can print the origin value by access to the same position as the unique values array (for this case 0 is for the first array and 1 is for the second array
 console.log(`origin: ${uniqueArrayOrigin[i]}; value: 
 ${uniquefromtwoarrays[i]}`);
}
0 голосов
/ 16 мая 2019

Вы можете просмотреть uniquefromtwoarrays и проверить наличие значения в массивах

var firstDbArray=[1,2,7,9,3,4,0,6,5,10]
var secondDbArray=[1,2,9,7,0,4,8,11,15,30,10,12]

var uniquefromtwoarrays= [];

for (var i = 0; i < this.firstDbArray.length; i++) {
  if (this.secondDbArray.indexOf(this.firstDbArray[i]) === -1) {
    uniquefromtwoarrays.push(this.firstDbArray[i]);
  }
}
for (i = 0; i < this.secondDbArray.length; i++) {
  if (this.firstDbArray.indexOf(this.secondDbArray[i]) === -1) {
    uniquefromtwoarrays.push(this.secondDbArray[i]);
  }
}

let object = {firstDbArray,secondDbArray}
uniquefromtwoarrays.forEach(value=>{
  let includeIn = Object.entries(object).filter(([key,array])=>array.includes(value)).map(([key])=> key)
  console.log(`${value} is from in ${includeIn.join(', ')}`)
})

В случае, если вы просто хотите увидеть источник, вам нужно сохранить дополнительную переменную для отслеживания происхождения, что-то похожее на ответ Рикардо

0 голосов
/ 16 мая 2019
if ( secondDbArray.indexOf(uniquefromtwoarrays[i] === -1 ) 
 // uniquefromtwoarrays[i] is related to the first array
else 
// uniquefromtwoarrays[i] is related to the second array
...