2

Need to display an array in a specific format . Input Arrays:

let userList = [
  {"id": "12356","username": "[email protected]"},
  {"id": "333333", "username": "[email protected]"}
]
let userArray = [
  {"username": "[email protected]","sharedPaper": "some paper"}
]

Expected Result:

let resultArr = [
  {"id":"12356","username": "[email protected]","sharedPaper": "some paper"}
]
0

9 Answers 9

3

You can use filter and map methods (assuming that username is unique)

const userList = [{
  "id": "12356",
  "username": "[email protected]"
}, {
  "id": "333333",
   "username": "[email protected]"
 }];
const userArray = [{"username": "[email protected]","sharedPaper": "some paper"}];

const result = userList
  .filter(user => userArray.find(u => u.username === user.username))
  .map(user => {
      const userAdditionalData = userArray.find(u => u.username === user.username);
      return {
         ...user,
         ...userAdditionalData
      }
});

console.log(result)

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

Comments

1

I will suggest creating a Map or Object first for searching rather using Array.prototype.find

let userList=[{"id": "12356","username": "[email protected]"},
             {"id": "333333", "username": "[email protected]"}]
let userArray=[{"username": "[email protected]","sharedPaper": "some paper"}]

let map = userArray.reduce((a, c) => {
	a.has(c.username)? '':  a.set(c.username, c);
	return a;
}, new Map())

let out = userList.map(ele =>  ({...ele, ...map.get(ele.username)})).filter(ele => ele.sharedPaper);

console.log(out)

Comments

1

You can do:

const userList = [{"id": "12356", "username": "[email protected]"}, {"id": "333333", "username": "[email protected]"}];
const userArray = [{"username": "[email protected]", "sharedPaper": "some paper"}];
const resultArr = userArray.map(u => Object.assign({id: userList.find(ul => ul.username === u.username).id}, u));

console.log(resultArr);

Comments

1
let userList=[{"id": "12356","username": "[email protected]"},
             {"id": "333333", "username": "[email protected]"}];
let userArray=[{"username": "[email protected]","sharedPaper": "some paper"}];


var result = userList.reduce((acc, c)=>{
    let k = userArray.find((a)=>{ return a.username == c.username });
    k ? acc.push({...c, ...k}): ''
    return acc ;
}, []);

console.log(result);

Hope this helps you !

Comments

1

let userList = [
    { id: '12356', username: '[email protected]' },
    { id: '333333', username: '[email protected]' },
]
let userArray = [
    { username: '[email protected]', sharedPaper: 'some paper 1' },
    { username: '[email protected]', sharedPaper: 'some paper 2' },
]

let resultArr = userList.map(user => ({
    ...user,
    sharedPaper: userArray.find(
        usa => usa.username === user.username
    ).sharedPaper,
}))

console.log(resultArr)

Comments

0

I think you can also do it with "reduce", something like this:

var resultArr = userList.reduce((arr, e) => {
  arr.push(Object.assign({}, e, userArray.find(a => a.username == e.username)))
  return arr;
}, [])

Comments

0

You need to join two list on common property username

You can do like this :

userArray.forEach(w=>{
      let user=userList.find(u=>u.username===w.username); 
      if(user) w['id']=user.id})

userArray will get updated with extra property 'id' like below

enter image description here

Comments

0

let userList = [
  {"id": "12356","username": "[email protected]"},
  {"id": "333333", "username": "[email protected]"}
]
let userArray = [
  {"username": "[email protected]","sharedPaper": "some paper"}
]

let rs = userArray.map(({username:u, sharedPaper}) => 
  ({...(userList.find(e => u === e.username)), sharedPaper})
)

console.log(rs)

Comments

0

let userList = [{
    "id": "12356",
    "username": "[email protected]"
  },
  {
    "id": "333333",
    "username": "[email protected]"
  }
]
let userArray = [{
  "username": "[email protected]",
  "sharedPaper": "some paper"
}]

let resultArr = userList.map(user => {

  let userSharedPaper = userArray.find(userId => userId.username ===
    user.username);

  if (userSharedPaper && Object.keys(userSharedPaper).length > 0) {

    return { ...user,
      sharedPaper: userSharedPaper.sharedPaper
    }

  } else {
  
  return { ...user, sharedPaper:"" }
  
  }


})

console.log(resultArr)

Comments

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.