0

I have an object with this structure {aaas:"good","aasda":"ok","adasa":"good","ascas":"good","asdasd":"nw","asdasda":"nw",asdqw:"nw","assa":"ok","asscsa":"ok"}

Here I want to group each key with the similar value and put these to new object. Just like newObj={"aaas":"good","adasa":"good","ascas":"good"}

0

3 Answers 3

1

You could use an object and group by value.

var object = { aaas: "good", aasda: "ok", adasa: "good", ascas: "good", asdasd: "nw", asdasda: "nw", asdqw: "nw", assa: "ok", asscsa: "ok" },
    grouped = {};

Object.keys(object).forEach(function (k) {
    if (!grouped[object[k]]) {
        grouped[object[k]] = {};
    }
    grouped[object[k]][k] = object[k];
});

console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }

Sign up to request clarification or add additional context in comments.

Comments

1

You can do something like this

    var obj = {'aaas':"good","aasda":"ok","adasa":"good","ascas":"good","asdasd":"nw","asdasda":"nw",asdqw:"nw","assa":"ok","asscsa":"ok"};
    var newObj={};
    angular.forEach(obj, function(value, key) {
    if(value=="good"){
    newObj[key]=value;
    }
    });

Hopes this helps you .. Thanks

1 Comment

Thank you very much @Ujjwal kaushik
1

The object needs a little work (yours was missing quotes):

const data = {
  "aaas":"good",
  "aasda":"ok",
  "adasa":"good",
  "ascas":"good",
  "asdasd":"nw",
  "asdasda":"nw",
  "asdqw":"nw",
  "assa":"ok",
  "asscsa":"ok"
};

groupUp = (input) => {
  return input.reduce(arr, (key, val) => {
    if (!_.includes(arr, key)) {
      arr.push(_.groupBy(input, key));
    }
    return arr;
  }, []);
}

console.log(groupUp(data));

That should get what you want (I haven't tested it though, and it uses lodash methods, so you might want to slightly rewrite that if you don't use lodash).

1 Comment

Thanks @rrd for your help.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.