function filterResult(field, value){
var result = [
{
"name": "Johnson",
"age": "12",
"interests": {
"color": "red"
}
},
{
"name": "Calvin",
"age": "24",
"interests": {
"color": "blue"
}
}
];
var filter = $.map(result, function(n, i){
//other stuff here...
n[field] = value; //dot notation
return n;
});
return filter;
}
filterResult("interests.color","black");
Is there a way to convert String Dot Notation "interests.color" to object "n[field]" to update the value?
- Please note "interests.color" just an example. sometimes level can be deeper e.g. "interests.car.make.year". Dynamic is an idea.
Got an answer from other post.
function setterDotNotation(obj, str, value){
if (typeof str == 'string'){
return setterDotNotation(obj,str.split('.'), value);
}else if (str.length==1 && value!==undefined){
return obj[str[0]] = value;
}else if (str.length==0){
return obj;
}else{
return setterDotNotation(obj[str[0]], str.slice(1), value);
}
}