Je voulais obtenir des valeurs d'un tableau d'objets avec des clés et des valeurs dans un autre tableau d'objets avec les mêmes clés.
const resultArray = [
{
title: 'Some Title 1',
key: 'key1',
number: 7,
icon: require('../../assets/some2.png')
},
{
title: 'Some Title 2',
key: 'key2',
number: 1,
icon: require('../../assets/some1.png')
},
{
title: 'Some Title 3',
key: 'key3',
number: 37,
icon: require('../../assets/some3.png')
}
]
keys.map((key) => {
if (array2[key] === key) {
// console.log('card detail matching');
// add to the array 2 with value
}
})
J'ai essayé d'utiliser Object.keys pour obtenir toutes les clés de l'objet array1.
const keys = Object.keys(obj);
const array2 = [
{
title: 'Some Title 1',
key: 'key1',
number: '',
icon: require('../../assets/some2.png')
},
{
title: 'Some Title 2',
key: 'key2',
number: '',
icon: require('../../assets/some1.png')
},
{
title: 'Some Title 3',
key: 'key3',
number: '',
icon: require('../../assets/some3.png')
},
];
mais après un point, cela n'a pas de sens.
Tableau attendu
const array1 = [{
key1: 7,
key2: 1,
key3: 37,
}];
Je m'attends à ce que la sortie soit les valeurs de la clé qui seraient entrées dans array2 dans la clé 'number'. p >
5 Réponses :
Vous pouvez parcourir chaque objet de array2 et ajouter la valeur numérique extraite de array1
const array1 = [{
key1: 7,
key2: 1,
key3: 37,
}];
const array2 = [
{
title: 'Some Title 1',
key: 'key1',
number: '',
icon: '../../assets/some2.png'
},
{
title: 'Some Title 2',
key: 'key2',
number: '',
icon: '../../assets/some1.png'
},
{
title: 'Some Title 3',
key: 'key3',
number: '',
icon: '../../assets/some3.png'
},
];
array2.forEach(e => e.number = array1[0][e.key]);
console.log(array2)
Vous pouvez mapper un nouveau tableau en utilisant la clé comme accesseur pour les clés.
const
array1 = [{ key1: 7, key2: 1, key3: 37 }],
array2 = [{ title: 'Some Title 1', key: 'key1', number: '', icon: '../../assets/some2.png' }, { title: 'Some Title 2', key: 'key2', number: '', icon: '../../assets/some1.png' }, { title: 'Some Title 3', key: 'key3', number: '', icon:'../../assets/some3.png' }],
result = array2.map(o => Object.assign({}, o, { number: array1[0][o.key] }));
console.log(result);
Le code ci-dessous vous aide: -
const array1 = {
key1: 7,
key2: 1,
key3: 37,
};
const array2 = [
{
title: 'Some Title 1',
key: 'key1',
number: '',
icon: require('../../assets/some2.png')
},
{
title: 'Some Title 2',
key: 'key2',
number: '',
icon: require('../../assets/some1.png')
},
{
title: 'Some Title 3',
key: 'key3',
number: '',
icon: require('../../assets/some3.png')
},
];
array2.forEach(item=>{
item.number=array1[item.key]
})
const array1 = [{
key1: 7,
key2: 1,
}];
const array2 = [
{
title: 'Some Title 1',
key: 'key1',
number: '',
icon: '../../assets/some2.png'
},
{
title: 'Some Title 2',
key: 'key2',
number: '',
icon: '../../assets/some1.png'
},
{
title: 'Some Title 3',
key: 'key3',
number: '',
icon: '../../assets/some3.png'
},
];
const resultArray = array2.filter(item => array1[0][item.key]);
console.log(resultArray);
Vous pouvez filtrer pour obtenir le résultat.
Cela devrait fonctionner pour vous.
const keys = [
{
key1: 7,
key2: 1,
key3: 37,
},
{
key4: 7,
key5: 1,
key6: 37,
}
];
const array2 = [
{
title: 'Some Title 1',
key: 'key4',
number: ''
},
{
title: 'Some Title 2',
key: 'key2',
number: ''
},
{
title: 'Some Title 3',
key: 'key3',
number: ''
}
];
function populateArrayData (arr, propToCompare, propToReplace, keysObj) {
let populatedArray = [];
if (Array.isArray(arr)) {
populatedArray = arr.map((item) => {
if (checkIfKeyExists(item[propToCompare], keysObj)) {
item[propToReplace] = keysObj[item[propToCompare]];
}
return item;
});
}
return populatedArray;
}
function flattenAllKeys (keys) {
let flattenedKeysObj = {};
if (Array.isArray(keys)) {
flattenedKeysObj = keys.reduce((acc, keysObj) => {
acc = {...acc, ...keysObj};
return acc;
}, {});
}
return flattenedKeysObj;
}
function checkIfKeyExists(key, keysObj) {
return (keysObj[key]!== undefined && keysObj[key]!== null);
}
let flattenedKeys = flattenAllKeys(keys);
console.log(populateArrayData(array2, 'key', 'number', flattenedKeys));
le code que vous avez écrit ne fait rien, alors en quoi cela n'a-t-il pas de sens?