реализация Array.filter для объектов:
Напишите свою реализацию Array.filter для объектов:
var phone = { brand: "meizu", model: "m2", ram: 2, color: "black", }; filter(phone,function(key,value){ return (key == "color" || value == 2); }); должно вернуть { ram: 2, color: "black", } Для удаления пары ключ-значение используйте delete.
var phone = {
brand: "meizu",
model: "m2",
ram: 2,
color: "black",
};
function filter(object){
for(var key in object){
console.log(key);
}
}
filter(phone, function(key){
return (key === 'model' || value === '2');
});
Помогите разобраться? Как сделать value-значением и нужно добавить метод forEach()? |
???
var phone = {
brand: "meizu",
model: "m2",
ram: 2,
color: "black"
};
function filter(object,search,val){
var result = {};
for(var key in object){
if(search == key || object[key] == val) result[key] = object[key];
}
return result;
}
console.log(filter(phone, "color",2));
var phone = {
brand: "meizu",
model: "m2",
ram: 2,
color: "black"
};
function filter(object,search,val){
for(var key in object){
if(search != key && object[key] != val) delete object[key];
}
}
filter(phone, "color",2);
console.log(phone);
|
:write:
var phone = {
brand: "meizu",
model: "m2",
ram: 2,
color: "black"
};
function filter(object, fn){
return Object.entries(object).filter(e => fn(...e)).reduce((a,[b, c] = b) => (a[b] = c, a),{})
}
console.log(filter(phone,function(key,value){
return (key == "color" || value == 2);
}));
|
Спасибо:thanks:
|
Сначала сделать обобщённую функцию, а потом с помощью функции callback..
filter(phone,function(key,value){
return (key == "color" || value == 2);
});
Не могу понять, что нужно изменить? |
Marson,
:-? |
Рони, я не могу разобрать как работает код на ES6
|
Marson,
Object.entries(object) создали массив массивов из key и value [ [ "brand", "meizu" ], [ "model", "m2" ], [ "ram", 2 ], [ "color", "black" ] ] .filter(e => fn(...e)) отфильтровали key == "color" || value == 2 [ [ "ram", 2 ], [ "color", "black" ] ] .reduce((a,[b, c] = b) => (a[b] = c, a),{}) создали обьект { "ram": 2, "color": "black" } |
На чистом js с помощью for..in и if() можно код написать, что бы в параметрах общей функции была функция callback? У меня с параметрами возникают проблемы, которые находятся в callback(key, value) они не попадают в условие общей функции.
|
Marson,
не понимаю |
| Часовой пояс GMT +3, время: 19:26. |