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.