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