简体   繁体   中英

Compare 2 arrays and return true or false

I am kinda new to Javascript and I cant figure out how to do this.

So , I have this ( from csv file ) array1

 [{…}, {…}, {…}, {…}, {…}, {…}, {…}]
0: {Number: 1}
1: {Number: 2}
2: {Number: 3}
3: {Number: 64}
4: {Number: 65}
5: {Number: 66}
6: {Number: 67}

array 2 ( also from other csv )

 [{…}, {…}, {…}, {…}, {…}, {…}, {…}]
0: {Number: 1}
1: {Number: 2}
2: {Number: 3}
3: {Number: 11}
4: {Number: 12}
5: {Number: 13}
6: {Number: 14}

Now I want to find the duplicates and generate a csv like :

 [{…}, {…}, {…}, {…}, {…}, {…}, {…}]
0: {Number: 1, Result: "Not Ok"}
1: {Number: 2, Result: "Not Ok"}
2: {Number: 3, Result: "Not Ok"}
3: {Number: 11, Result: "Ok"} 

the code I got it adds the " Not ok" and I am stuck in the last part .

for (var i = 0; i < array1.data.length; i++) {
          for (var j = 0; j < array2.data.length; j++) {
                 if (array1.data[i].Number=== array2.data[j].Number) {
                    array2.data[j].result= [],
                    array2.data[j].result.push("Not OK")
                 }
          }
}

Need some help here!

You could take a Set for all values of the first array and then map the second by checking the value.

 var array1 = [{ Number: 1 }, { Number: 2 }, { Number: 3 }, { Number: 64 }, { Number: 65 }, { Number: 66 }, { Number: 67 }], array2 = [{ Number: 1 }, { Number: 2 }, { Number: 3 }, { Number: 11 }, { Number: 12 }, { Number: 13 }, { Number: 14 }], set1 = new Set(array1.map(o => o.Number)), result = array2.map(o => ({ ...o, Result: set1.has(o.Number) ? 'Not Ok' : 'Ok' })); console.log(result);

Here's one way you could go about this:

 const arr1 = [ { Number: 1 }, { Number: 2 }, { Number: 3 }, { Number: 64 }, { Number: 65 }, { Number: 66 }, { Number: 67 } ]; const arr2 = [ { Number: 1 }, { Number: 2 }, { Number: 3 }, { Number: 11 }, { Number: 12 }, { Number: 13 }, { Number: 14 } ]; const dictionary = [...arr1, ...arr2].reduce((accumulator, item) => { const key = item.Number; const record = accumulator[key] || { key, count: 0 }; return { ...accumulator, [key]: { ...record, count: record.count + 1 } }; }, {}); const result = Object.keys(dictionary).map(key => { const item = dictionary[key]; return { Number: item.key, Result: item.count > 1 ? "Not Ok" : "Ok" }; }); console.log(result)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM