Javascript 基于关键帧从阵列中删除对象&;其他对象中的属性?
我有以下对象,其中属性键设置为用户名,属性值设置为它们出现的次数计数,以及一个数组,其中包含属性为Javascript 基于关键帧从阵列中删除对象&;其他对象中的属性?,javascript,arrays,object,Javascript,Arrays,Object,我有以下对象,其中属性键设置为用户名,属性值设置为它们出现的次数计数,以及一个数组,其中包含属性为UserId和username的对象列表: peopleWhoAppear = { "Edward": 5, "Charlotte": 2, "Michael": 9, "Andy": 6 } siteUsers = [ { UserId: 1842, UserName: "Sam" }, { UserId: 2943, UserName: "Charlotte" }, { Us
UserId
和username
的对象列表:
peopleWhoAppear = { "Edward": 5, "Charlotte": 2, "Michael": 9, "Andy": 6 }
siteUsers = [
{ UserId: 1842, UserName: "Sam" },
{ UserId: 2943, UserName: "Charlotte" },
{ UserId: 1842, UserName: "Richard" },
{ UserId: 2916, UserName: "Ivan" },
{ UserId: 2073, UserName: "Paul" },
{ UserId: 1842, UserName: "Theo" }
...
]
我想从siteUsers
数组中删除所有对象,如果属性值与某个数字匹配(可能是5或8),则用户名
与peoplewhoimed
对象中的属性键匹配,并将剩余结果返回到另一个数组。我在这件事上已经坚持了2天6个小时了,但我没有取得任何进展
我尝试了.filter
和.splice
的各种排列和循环,但没有成功。例如:
for (var UserName in peopleWhoAppear) {
if (peopleWhoAppear[UserName ] === count) {
siteUsers.filter(function (person) {
console.log(person);
return person.UserName !== verifier;
}));
}
}
我怎样才能做到这一点?除了jQuery,我没有访问任何库的权限,所以下划线之类的东西在这里没有用处 Filter()
不会更改数组,它会返回一个新数组。如果要迭代筛选数组,每次必须将其设置为返回值filter()
// copy the array
var newSiteUsers = siteUsers.slice(0)
for (var UserName in peopleWhoAppear) {
if (peopleWhoAppear[UserName ] === count) {
newSiteUsers = newSiteUsers.filter(function (person) {
console.log(person);
return person.UserName !== UserName;
}));
}
}
console.log(newSiteUsers);
Filter()
不会更改数组,它会返回一个新数组。如果要迭代筛选数组,每次必须将其设置为返回值filter()
// copy the array
var newSiteUsers = siteUsers.slice(0)
for (var UserName in peopleWhoAppear) {
if (peopleWhoAppear[UserName ] === count) {
newSiteUsers = newSiteUsers.filter(function (person) {
console.log(person);
return person.UserName !== UserName;
}));
}
}
console.log(newSiteUsers);
我尝试了.filter
和.splice
的各种排列和循环,但没有成功
您只需要过滤器
:
return siteUsers.filter(function(obj) {
var user = obj.UserName;
return !(user in peopleWhoAppear && peopleWhoAppear[user] == count);
});
这将为您提供一个新的数组,其中包含所有未出现在peoplwhoined
中或计数错误的用户
我尝试了.filter
和.splice
的各种排列和循环,但没有成功
您只需要过滤器
:
return siteUsers.filter(function(obj) {
var user = obj.UserName;
return !(user in peopleWhoAppear && peopleWhoAppear[user] == count);
});
这将为您提供一个新的数组,其中包含所有未出现在peoplwhoined
中或计数错误的用户