Javascript 在下一个要替换的数组中查找对象数组

Javascript 在下一个要替换的数组中查找对象数组,javascript,arrays,arrayobject,Javascript,Arrays,Arrayobject,我有两个下面的数组对象。我希望找到第一个数组的所有ID,并使它们在对象的第二个数组中处于活动状态,而其余的ID必须在status属性中变为none var searchIDs = [{ "id":"6001", "other" : "..." }, { "id":"6002", "other" : "..."}] var list

我有两个下面的数组对象。我希望找到第一个数组的所有ID,并使它们在对象的第二个数组中处于活动状态,而其余的ID必须在status属性中变为none

var searchIDs = [{ "id":"6001", "other" : "..." }, 
{ "id":"6002", "other" : "..."}] 

var list = [ 
    {"id":"9666", "status":"active"},
    {"id":"9667", "status":"none"},
    {"id":"9999", "status":"none"},
    {"id":"9668", "status":"none"},
    {"id":"9669", "status":"active"},
    {"id":"6001", "status":"none"},
    {"id":"6002", "status":"none"},
    {"id":"6003", "status":"none"},
    {"id":"6004", "status":"none"},
    {"id":"6005", "status":"active"},
    {"id":"6006", "status":"none"},
    {"id":"6007",  "status":"none"},
    {"id":"6008",  "status":"none"},
    {"id":"6009",  "status":"none"}
]



for (var i = 0 ; i < searchIDs.length ; i ++) {

    list.find(v => v.id !== searchIDs[i].id).status = "none";
    list.find(v => v.id === searchIDs[i].id).status = "active";
    Array.prototype.push.apply(list); 


}



console.log('Final List : '  + JSON.stringify(list)); 


我建议在对第二个列表(list)的调用中搜索第一个列表(searchid)中的项目,我们基本上是检查列表的每个成员是否也是searchid的成员

如果SearchID非常大,这可能不是非常有效的,因此可以创建一个应用程序并使用检查成员身份

var searchIDs=[{“id”:“6001”,“其他”:“…”},
{“id”:“6002”,“其他”:“…”}]
变量列表=[
{“id”:“9666”,“状态”:“活动”},
{“id”:“9667”,“状态”:“无”},
{“id”:“9999”,“状态”:“无”},
{“id”:“9668”,“状态”:“无”},
{“id”:“9669”,“状态”:“活动”},
{“id”:“6001”,“状态”:“无”},
{“id”:“6002”,“状态”:“无”},
{“id”:“6003”,“状态”:“无”},
{“id”:“6004”,“状态”:“无”},
{“id”:“6005”,“状态”:“活动”},
{“id”:“6006”,“状态”:“无”},
{“id”:“6007”,“状态”:“无”},
{“id”:“6008”,“状态”:“无”},
{“id”:“6009”,“状态”:“无”}
]
list=list.map(r=>{
返回{id:r.id,状态:searchid.find(s=>s.id===r.id)?“活动”:“无”};
})
控制台日志(列表)这是有效的

  var searchIDs = [
   { "id":"6001", "other" : "..." }, 
   { "id":"6002", "other" : "..."}
  ] 
  var list = [ 
    {"id":"9666", "status":"active"},
    {"id":"9667", "status":"none"},
    {"id":"9999", "status":"none"},
    {"id":"9668", "status":"none"},
    {"id":"9669", "status":"active"},
    {"id":"6001", "status":"none"},
    {"id":"6002", "status":"none"},
    {"id":"6003", "status":"none"},
    {"id":"6004", "status":"none"},
    {"id":"6005", "status":"active"},
    {"id":"6006", "status":"none"},
    {"id":"6007",  "status":"none"},
    {"id":"6008",  "status":"none"},
    {"id":"6009",  "status":"none"}
  ]

  let resArr =  list.map(function(item){
     let obj = item;
     if(searchIDs.find(x => x.id == item.id)){
       obj.status = "active";
     }else{
       obj.status = "none";
     }
     return obj;
  });
  console.log(resArr);

如果我理解正确的话。这可能就是你要找的

var searchIDs=[
{“id”:“6001”,“其他”:“…”},
{“id”:“6002”,“其他”:“…”}
] 
变量列表=[
{“id”:“9666”,“状态”:“活动”},
{“id”:“9667”,“状态”:“无”},
{“id”:“9999”,“状态”:“无”},
{“id”:“9668”,“状态”:“无”},
{“id”:“9669”,“状态”:“活动”},
{“id”:“6001”,“状态”:“无”},
{“id”:“6002”,“状态”:“无”},
{“id”:“6003”,“状态”:“无”},
{“id”:“6004”,“状态”:“无”},
{“id”:“6005”,“状态”:“活动”},
{“id”:“6006”,“状态”:“无”},
{“id”:“6007”,“状态”:“无”},
{“id”:“6008”,“状态”:“无”},
{“id”:“6009”,“状态”:“无”}
]
//此行创建一个新数组,其中仅包含id
const id=searchid.map(line=>line.id)
//我们将映射这个数组
//如果此行id出现在id列表中,我们可以将状态设置为活动。不然的话
var newList=list.map(行=>{
//您也可以使用。包括
line.status=ids.indexOf(line.id)>-1?'active':'none';
回流线;
})

log(newList)
发布一个非常基本的方法如下,希望对您有所帮助

var searchIDs = [{ "id":"6001", "other" : "..." }, 
    { "id":"6002", "other" : "..."}] 
    
    var list = [ 
        {"id":"9666", "status":"active"},
        {"id":"9667", "status":"none"},
        {"id":"9999", "status":"none"},
        {"id":"9668", "status":"none"},
        {"id":"9669", "status":"active"},
        {"id":"6001", "status":"none"},
        {"id":"6002", "status":"none"},
        {"id":"6003", "status":"none"},
        {"id":"6004", "status":"none"},
        {"id":"6005", "status":"active"},
        {"id":"6006", "status":"none"},
        {"id":"6007",  "status":"none"},
        {"id":"6008",  "status":"none"},
        {"id":"6009",  "status":"none"}
    ]
    
    let newsearchIds = [];
    
    for (var i = 0 ; i < searchIDs.length ; i ++) {
        for(let key in searchIDs[i]){
            newsearchIds.push(searchIDs[i][key]);
        }
    }
    
    for (var i = 0 ; i < list.length ; i ++) {
        for (var j = 0 ; j < newsearchIds.length ; j ++) {
            if(list[i].id === newsearchIds[j]){
                list[i].status= "active";
            }
        }
    }
    console.log(list);
var searchIDs=[{“id”:“6001”,“其他”:“…”},
{“id”:“6002”,“其他”:“…”}]
变量列表=[
{“id”:“9666”,“状态”:“活动”},
{“id”:“9667”,“状态”:“无”},
{“id”:“9999”,“状态”:“无”},
{“id”:“9668”,“状态”:“无”},
{“id”:“9669”,“状态”:“活动”},
{“id”:“6001”,“状态”:“无”},
{“id”:“6002”,“状态”:“无”},
{“id”:“6003”,“状态”:“无”},
{“id”:“6004”,“状态”:“无”},
{“id”:“6005”,“状态”:“活动”},
{“id”:“6006”,“状态”:“无”},
{“id”:“6007”,“状态”:“无”},
{“id”:“6008”,“状态”:“无”},
{“id”:“6009”,“状态”:“无”}
]
让newsearchIds=[];
对于(var i=0;i
Ya,它与map一起工作,列表可能有其他属性,因此我必须选择Kwarkjes的答案。
var searchIDs = [{ "id":"6001", "other" : "..." }, 
    { "id":"6002", "other" : "..."}] 
    
    var list = [ 
        {"id":"9666", "status":"active"},
        {"id":"9667", "status":"none"},
        {"id":"9999", "status":"none"},
        {"id":"9668", "status":"none"},
        {"id":"9669", "status":"active"},
        {"id":"6001", "status":"none"},
        {"id":"6002", "status":"none"},
        {"id":"6003", "status":"none"},
        {"id":"6004", "status":"none"},
        {"id":"6005", "status":"active"},
        {"id":"6006", "status":"none"},
        {"id":"6007",  "status":"none"},
        {"id":"6008",  "status":"none"},
        {"id":"6009",  "status":"none"}
    ]
    
    let newsearchIds = [];
    
    for (var i = 0 ; i < searchIDs.length ; i ++) {
        for(let key in searchIDs[i]){
            newsearchIds.push(searchIDs[i][key]);
        }
    }
    
    for (var i = 0 ; i < list.length ; i ++) {
        for (var j = 0 ; j < newsearchIds.length ; j ++) {
            if(list[i].id === newsearchIds[j]){
                list[i].status= "active";
            }
        }
    }
    console.log(list);