реализация 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, время: 09:18. |