JavaScript 遍历两个数组并获得单个数组

标签 javascript

我有两个数组:

var arr = [ 
  { id: 2, username: 'bill'}, 
  { id: 3, username: 'ted' }];

var b = ["ted", "bill", "john"];

我怎样才能得到一个这样的数组:

var finalArr = [{id: 2, username: 'bill'},{id:3, username: 'ted'}. {id:0, username: 'john'}]

如果数组b中的用户存在于arr数组中则添加id,否则id为0。

我试过类似的方法,但没有用

var arr = [{
    id: 2,
    username: 'bill'
  },
  {
    id: 3,
    username: 'ted'
  }
];

var b = ["ted", "bill", "john"];

var finalArr = [];

function userExists(username) {
  var a = arr.some(item => {
    if (item.username === username) {
      finalArr.push({
        username,
        id: item.id
      })
    } else {
      finalArr.push({
        username,
        id: 0
      })
    }
  })
}

b.forEach(el => {
  userExists(el)
})

console.log(finalArr)

最佳答案

使用 map 遍历 b .使用 find 检查 username 是否存在于 arr 中.如果是,则返回该对象。否则,返回一个带有 id: 0

的新对象

var arr = [ 
  { id: 2, username: 'bill'}, 
  { id: 3, username: 'ted' }];

var b = ["ted", "bill", "john"];

const output = b.map(username => {
  const found = arr.find(a => a.username === username);
  return found || { username, id: 0 }
})

console.log(output)

关于JavaScript 遍历两个数组并获得单个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55970068/

相关文章:

javascript - JQuery悬停事件处理程序运行太多次

javascript - d3节点标记: how to display JSON data formatted with HTML?

javascript - Google Analytics trackEvent 内部链接无法正常工作

javascript - 如何将响应正文显示为html

java - 解码 javascript 编码的 url

javascript - 触发 <input type ="file"/> 的 javascript 事件 onchange 事件

javascript - 将 blob 转换为文件

javascript - html5 Canvas 弹性碰撞方 block

javascript - 检测表单中的后期操作

javascript - 在所需行设置文本区域的值