I have a state object array. I want to convert the values inside the array into a key-value pair
So, my state looks like this:
0: {emp_code: "a001", company_code: "company_a", name: "abx", details: Array(3), details_dtypes: Array(3)}
1: {emp_code: "b002", company_code: "company_b", name: "xbz ", details: Array(2), details_dtypes: Array(2)}
//and so on adding other values to the array
I want to convert the emp-code and company_code into a key-value pair and display like a JSON object; So the JSON output looks something like this:
{
emp_and_company:
{
"company_a" : ["a001","a002"],
"company_b" : ["b002","b003"]
}
}
So I just want to make the company_code as the key and values as the emp_code
You can do this in a concise manner via Array.reduce :
const data = [{ emp_code: "a001", company_code: "company_a", name: "abx", details: [], details_dtypes: [] }, { emp_code: "b002", company_code: "company_b", name: "xbz ", details: [], details_dtypes: [] }, { emp_code: "a002", company_code: "company_a", name: "xbz ", details: [], details_dtypes: [] }, { emp_code: "b003", company_code: "company_b", name: "xbz ", details: [], details_dtypes: [] } ] let result = data.reduce((r,c) => (r[c.company_code] = [...(r[c.company_code] || []), c.emp_code]) && r, {}) console.log(result)
Here is a more readable version:
const data = [{ emp_code: "a001", company_code: "company_a", name: "abx", details: [], details_dtypes: [] }, { emp_code: "b002", company_code: "company_b", name: "xbz ", details: [], details_dtypes: [] }, { emp_code: "a002", company_code: "company_a", name: "xbz ", details: [], details_dtypes: [] }, { emp_code: "b003", company_code: "company_b", name: "xbz ", details: [], details_dtypes: [] }] let result = data.reduce((acc, obj) => { acc[obj.company_code] = [...(acc[obj.company_code] || []), obj.emp_code] return acc }, {}) console.log(result)
var output = {};
array.forEach((data) => {
var prev = output[data['company_code']] || [];
prev.push(data['emp_code']);
output[data['company_code']] = prev;
});
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.