Помогите, пожалуйста, решить не получается просто вообще
Нужно чтобы в массиве объектов оставались уникальные свойства со значениями значения
показал в коде примеры, что должны выдаваться
https://codesandbox.io/s/small-browser-rpw9mz?file=/src/index.js
пример
[
{ name: "Gleb", age: 1, test: 6 },
{ name: "Gleb", age: 2, test: 6 },
{ name: "Gleb", age: 6, test: 6 }
]
Должно получиться [{ age: 1}, { age: 2 }, { age: 6 }]
если у этого имени во всех обьктах одинаковое значение мы удалляем, если нет, то оставляем
JavaScript
Сначала выбираем ключи, содержащие не одно значение.
Потом по этим ключам формируем возвращаемый массив.
Задача на логику в js
function getRem(arr) {
let keys = Object.keys(arr[0]).filter(k => new Set(arr.map(r => r[k])).size != 1);
return arr.map(r => keys.reduce((o, k) => (o[k] = r[k], o), {}));
}
Говнокод, но вроде бы работает.Сначала выбираем ключи, содержащие не одно значение.
Потом по этим ключам формируем возвращаемый массив.
Евгений Мозговой
Для чего в шифровании нужен ключ?
let a=[
{ name: "Gleb", age: 1, test: 6 },
{ name: "Gleb", age: 2, test: 6 },
{ name: "Gleb", age: 6, test: 6 }
].map(i=>i['age']);
let s=Array.from(new Set(a)).map(i=>{return {age:i}});
console.log(s);//[{age: 1},{age: 2},{age: 6}]
Алексей Петров
привязка к имени, в кодесендбоксе показал больше примеров
Алексей Петров
к имени age
Для решения этой задачи можно использовать метод `reduce()`. Вот как я бы это реализовал:
```javascript
const arr = [
{ name: "Gleb", age: 1, test: 6 },
{ name: "Gleb", age: 2, test: 6 },
{ name: "Gleb", age: 6, test: 6 }
];
const uniqueProps = arr.reduce((acc, cur) => {
// получаем массив из объекта текущего элемента, содержащий только ключи и их значения
const props = Object.entries(cur).map(([key, value]) => ({ [key]: value }));
// пробегаемся по каждому свойству текущего элемента и добавляем его в аккумулятор, если оно уникально
props.forEach(prop => {
const key = Object.keys(prop)[0];
const value = Object.values(prop)[0];
const exists = acc.some(obj => obj.hasOwnProperty(key) && obj[key] === value);
if (!exists) acc.push(prop);
});
return acc;
}, []);
// выводим только ключи "age"
const result = uniqueProps.map (obj => ({ age: obj.age }));
console.log(result); // [{ age: 1 }, { age: 2 }, { age: 6 }]
```
В этом примере мы:
1. Используем метод `reduce()` для прохода по всем элементам массива `arr`.
2. Внутри метода `reduce()` мы:
- Получаем массив из объекта текущего элемента, содержащий только ключи и их значения.
- Пробегаемся по каждому свойству текущего элемента и добавляем его в аккумулятор, если оно уникально.
- Возвращаем аккумулятор.
3. Получаем итоговый массив, содержащий только ключи "age".
```javascript
const arr = [
{ name: "Gleb", age: 1, test: 6 },
{ name: "Gleb", age: 2, test: 6 },
{ name: "Gleb", age: 6, test: 6 }
];
const uniqueProps = arr.reduce((acc, cur) => {
// получаем массив из объекта текущего элемента, содержащий только ключи и их значения
const props = Object.entries(cur).map(([key, value]) => ({ [key]: value }));
// пробегаемся по каждому свойству текущего элемента и добавляем его в аккумулятор, если оно уникально
props.forEach(prop => {
const key = Object.keys(prop)[0];
const value = Object.values(prop)[0];
const exists = acc.some(obj => obj.hasOwnProperty(key) && obj[key] === value);
if (!exists) acc.push(prop);
});
return acc;
}, []);
// выводим только ключи "age"
const result = uniqueProps.map (obj => ({ age: obj.age }));
console.log(result); // [{ age: 1 }, { age: 2 }, { age: 6 }]
```
В этом примере мы:
1. Используем метод `reduce()` для прохода по всем элементам массива `arr`.
2. Внутри метода `reduce()` мы:
- Получаем массив из объекта текущего элемента, содержащий только ключи и их значения.
- Пробегаемся по каждому свойству текущего элемента и добавляем его в аккумулятор, если оно уникально.
- Возвращаем аккумулятор.
3. Получаем итоговый массив, содержащий только ключи "age".
Алексей Петров
привязка к имени получаеться "age"
Алексей Петров
не работает с такими примерами
вставляем [
{ name: "Gleb", age: 1, test: 6 },
{ name: "Gleb", age: 2, test: 6 },
{ name: "Gleb", age: 6, test: 6 }
]
получаем [{ age: 1}, { age: 2 }, { age: 6 }]
вставляем [
{ hello: "hello", value: 1 },
{ hello: "hello", value: 2 },
{ hello: "hello", value: 2 }
]
получаем [{ value: 1}, { value: 2 }, { value: 2 }]
вставляем [
{ chanel: "tes", value: 3 },
{ chanel: "tes", value: 3 },
{ chanel: "russian", value: 3 }
]
получаем [{ chanel: "tes"}, { chanel: "tes" }, { chanel: "russian" }]
вставляем [
{ name: "Gleb", age: 1, test: 6 },
{ name: "Gleb", age: 2, test: 6 },
{ name: "Gleb", age: 6, test: 6 }
]
получаем [{ age: 1}, { age: 2 }, { age: 6 }]
вставляем [
{ hello: "hello", value: 1 },
{ hello: "hello", value: 2 },
{ hello: "hello", value: 2 }
]
получаем [{ value: 1}, { value: 2 }, { value: 2 }]
вставляем [
{ chanel: "tes", value: 3 },
{ chanel: "tes", value: 3 },
{ chanel: "russian", value: 3 }
]
получаем [{ chanel: "tes"}, { chanel: "tes" }, { chanel: "russian" }]
Похожие вопросы
- Не могу решить задачу по JS
- Я вот не знаком с программистами) Много ли таких, которые способны каждый раз с нуля кодить JS под конкретную задачу?
- Помогите определиться с выбором нового языка (JS(TS) vs Java)
- Js фреймворки, что полезного можно для себя найти?
- нужно решить задач с помощь js ...
- В чем цель фреймворков js web?
- [HTML/CSS/JS] Как сохранять изменённые в .js данные оффлайн-сервера локально?
- Почему jQuery методы популярнее js методов при общении с ДоМ?
- ПОЧЕМУ JS ТАКОЙ НЕПОНЯТНЫЙ???
- вопрос по JS. " простой ()";