我有两个数组:
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/