Displaying a list of attributes and differentiate them from attributes already selected
Generally speaking, I'd avoid relying heavily on function calls if speed is important. Specifically:

_.map(attibutes.metric, function (m)


If attibutes.metric is an array I'd do

var i = attibutes.metric.length;
while(i--) {
/* your code here */
}


or

var i, length = attibutes.metric.length;
for (i = 0; i &lt; length; i++) {
/* your code here */
}


depending on the engine, the while loop will be faster than the for or vice-versa. 

if attibutes.metric is an object I'd do

keys = Object.keys(attibutes.metric);
for (var key in keys) {
/* your code here */
}


Any of those constructs is probably faster than calling _.map (you should still profile it, YMMV).

second, i'd invert

if (_.isObject(m.attrData) {


if the alternative is m.attrData is a primitive type, so

if (typeof m.attrData === 'string') { // replace string with whatever primitive
    attr.value = _.values(m.attrData)[0];
} else {
    operator = _.keys(m.attrData)[0];
    if (operator !== "in") {
        attr.operator = operator;
    }
    attr.value = m.attrData;
}