J'ai deux gares d'objets qu'ils sont:
objet 1: p> objet 2:
[ objet 2: p> J'ai besoin de comparer les paramètres d'objet à savoir la position et la technologie et devez obtenir le tableau final dans lequel cette position et objet disponible comme ci-dessous p> sortie finale: p>
{
"SKU": "30772",
"Qté": "1"
},
{
"Position": "Bras de position à gauche",
"Tech": "Broderie"
},
{
"Position": "Positionnez la poitrine",
"Tech": "ScreenPrint Textile"
}
] p>
3 Réponses :
Essayez ceci, je pense que cela vous aidera à obtenir la réponse de votre désir.
const object1 = [ { "id":"30772", "posimage":"/b/l/blue-shirt_1_1.jpg", "position":"Position Chest", "tech":"Embroidery" }, { "id":"30772", "posimage":"/b/l/blue-shirt_1_1.jpg", "position":"Position Chest", "tech":"Screenprint Textile" }, { "id":"30772", "posimage":"/b/l/blue-shirt_1_1.jpg", "position":"Position Arm Left", "tech":"Embroidery" }, { "id":"30772", "posimage":"/b/l/blue-shirt_1_1.jpg", "position":"Position Arm Left", "tech":"Screenprint Textile" } ]; const object2 = [ { "position":"Position Arm Left", "tech":"Embroidery" }, { "position":"Position Chest", "tech":"Screenprint Textile" } ]; const findObject = object1.filter(obj1 => { const mathObject = object2.find(obj2 => { return obj2.tech === obj1.tech && obj2.position === obj1.position; }); return mathObject; }); console.log(findObject);
Essayez ceci:
Le code est assez explicite auto-explicite. P>
p> var obj1 = [
{
"id":"30772",
"posimage":"/b/l/blue-shirt_1_1.jpg",
"position":"Position Chest",
"tech":"Embroidery"
},
{
"id":"30772",
"posimage":"/b/l/blue-shirt_1_1.jpg",
"position":"Position Chest",
"tech":"Screenprint Textile"
},
{
"id":"30772",
"posimage":"/b/l/blue-shirt_1_1.jpg",
"position":"Position Arm Left",
"tech":"Embroidery"
},
{
"id":"30772",
"posimage":"/b/l/blue-shirt_1_1.jpg",
"position":"Position Arm Left",
"tech":"Screenprint Textile"
}
]
var obj2 = [
{
"position":"Position Arm Left",
"tech":"Embroidery"
},
{
"position":"Position Chest",
"tech":"Screenprint Textile"
}
]
const doer = (ob1, ob2) => {
let final = [];
ob1.map((one) => {
// let tobepushed = one.hasOwnPropery('id') ? one : two;
ob2.map(two => {
if(two.hasOwnProperty('position') &&
two.hasOwnProperty('tech') &&
two['position'] === one['position'] &&
two['tech'] === one['tech']
) {
final.push('id' in one ? one : two);
}
})
})
return final;
}
let l1 = obj1.length;
let l2 = obj2.length
if(l1 < l2) {
console.log(doer(obj2, obj1))
} else if (l2 < l1) {
console.log(doer(obj1, obj2))
}
// console.log(doer(obj2, obj1))
Si vous utilisez Lodash, vous pouvez utiliser p> intersectionwith code> méthode car il est intuitif que vous souhaitez une interespection basée sur deux touches.
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>
Le premier objet et l'objet final sont exactement les mêmes sauf que le nom de positionnement clé est modifié en position. Est-ce que quelque chose que vous voulez? Remplacer le nom de position par position Si la position et la position nom correspondent dans les deux objets?
Désolé j'ai édité ma question..juste une erreur négligente.
Donc maintenant, la sortie finale ne doit contenir que la correspondance de position dans l'objet 1 et l'objet 2, non?
oui l'objet correspondant d'objet 2 dans l'objet 1 devrait revenir