У меня есть два массива в jQuery, как показано ниже.
var arr1 = [{A: "t1"},{A: "t3"}];
var arr2 = [{A: "t1",B:""},{A: "t2",B:""},{A: "t3",B:""},{A: "t4",B:""},{A: "t5",B:""},{A: "t6",B:""}];
var arr3 = []; //Only for output
Теперь вывод в arr3 должен быть:
- все значения из arr2
- клавиша 'B' должна быть Да , если клавиша 'A' существует в arr1
- клавиша 'B' должна быть Нет , если клавиша 'A' не не существует в arr1
Итак, вывод, который я хочу в arr3, должен быть:
arr3 = [{A: "t1",B:"Yes"},{A: "t2",B:"No"},{A: "t3",B:"Yes"},{A: "t4",B:"No"},{A: "t5",B:"No"},{A: "t6",B:"No"}];
Это то, что я пробовал до сих пор
var arr1 = [{A: "t1"},{A: "t3"}];
var arr2 = [{A: "t1",B:""},{A: "t2",B:""},{A: "t3",B:""},{A: "t4",B:""},{A: "t5",B:""},{A: "t6",B:""}];
var arr3 = []; //Only for output
arr1.forEach(function(x) {
arr2.forEach(function(y) {
if (x.A == y.A) {
arr3.push({
A: x.A,
B: "Yes"
});
} else {
arr3.push({
A: x.A,
B: "No"
});
}
});
});
console.log(arr3);
//Output
0: {A: "t1", B: "Yes"}
1: {A: "t1", B: "No"}
2: {A: "t1", B: "No"}
3: {A: "t1", B: "No"}
4: {A: "t1", B: "No"}
5: {A: "t1", B: "No"}
6: {A: "t3", B: "No"}
7: {A: "t3", B: "No"}
8: {A: "t3", B: "Yes"}
9: {A: "t3", B: "No"}
10: {A: "t3", B: "No"}
11: {A: "t3", B: "No"}
Проблема здесь в том, что он повторяется для каждого элемента в arr1, и количество удваивается. Я знаю, что он должен разрываться где-то между if и else, чтобы он не повторялся.
Я тоже пробовал проверять ссылки ниже, но не смог получить большую помощь.
filter массив объектов на основе отдельных ключей объектов, значения
js - Как изменить значение одного ключа на основе значения другого ключа в массиве объектов
Сравнение объектов по ключам
сравнение массивов объектов
Заранее спасибо.