Вылетает "is not a function" при вызове функции
Функция должна складывать свойства объекта obj2 в объект, на котором был осуществлен вызов этой функции (obj), при этом если свойство из obj2 уже существует в obj, то оставить его без изменений. Функция должна вести список "неродных" свойств объекта, добавленных в него функцией mergeLeft.
При вызове функции вылетает ошибка "obj.mergeLeft is not a function".
Заранее большое спасибо!
function mergeLeft(obj) {
let result = {};
let mergedProperties = [];
for (let i = 0, array = [this, obj]; i < array.length; i++) {
for (let key in array[i]) {
if (result[key] === undefined) {
result[key] = array[i][key];
mergedProperties.push(array[i][key]);
} else {
mergedProperties = mergedProperties.filter((n) =>
{return n != array[i][key]});
}
}
} result.mergedProperties = mergedProperties;
return result
}
let obj = {a: 1, b: 2, c: 3};
let obj2 = {a: 2, d: 4};
obj.mergeLeft(obj2)
Ответы (1 шт):
Автор решения: Konstantin Modin
→ Ссылка
Можно сделать чтобы эта функция получала 2 аргумента - исходный объект и объект2. Тогда получаем:
const mergeLeft = (obj1, obj2) => {
const result = Object.assign({ mergedProperties: [] }, obj1);
for (let key in obj2) {
if (obj1[key] === undefined) {
result.mergedProperties.push({ [key]: obj2[key] });
result[key] = obj2[key];
}
}
return result;
};
let obj = { a: 1, b: 2, c: 3 };
let obj2 = { a: 2, c: 48, d: 4, e: 10, z: 15 };
console.log(mergeLeft(obj, obj2));