如何在Javascript中比较数组和对象?



我有两个json数组和对象 我想比较两个json并推送另一个对象

obj1 = ["user1", "user2"]
obj2 = [
{
"userName": "user1", 
"id": "14" 
},
{
"userName": "user2",
"id": "9",
},
{
"userName": "user3",
"id": "3",
},
{
"userName": "user4",
"id": "1",
}
]

我想得到以下结果

[
{
"userName": "user1",
"id": "14"
},
{
"userName": "user2",
"id": "9",
}
]

之后,我尝试比较两个数组并得到我需要的结果。

var obj1 = ["user1","user2"]
var obj2 = [
{
"userName": "user1",
"id": "14"
},
{
"userName": "user2",
"id": "9",
},
{
"userName": "user3",
"id": "3",
},
{
"userName": "user4",
"id": "1",
}
]
var objArray = [];
for (var i = 0; i < obj.length; i++) {
if (obj1[i] === obj2.userName) {
objArray.push(obj2[i]);
}
return objArray;

请帮我解决问题。 提前致谢

您可以通过用Array#includes检查名称来过滤。

var array1 = ["user1", "user2"],
array2 = [{ userName: "user1", id: "14" }, { userName: "user2", id: "9", }, { userName: "user3", id: "3", }, { userName: "user4", id: "1", }],
result = array2.filter(({ userName }) => array1.includes(userName));

console.log(result);

你需要两个循环:

  • 遍历obj1[i],对于每个索引obj1...
    • 循环访问obj2[]并测试每个对象,以查看username属性的值是否等于obj[i]的值。

var obj1 =  ["user1","user2"]
var obj2 = [
{  
"userName": "user1", 
"id": "14" 
},
{
"userName": "user2",  
"id": "9",    
},
{
"userName": "user3",    
"id": "3",
},
{
"userName": "user4",    
"id": "1",
}] 
function myFunction(){
var objArray = [];
for (var i=0; i < obj1.length; i++) {
for (var userIndex=0; userIndex < obj2.length; userIndex++){
if (obj1[i] === obj2[userIndex].userName){
objArray.push( obj2[userIndex] );
}
}
}
return objArray;
};
console.log(myFunction());

相关内容

  • 没有找到相关文章