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
中或计数错误的用户