更改除一个以外的所有对象的属性值

时间:2017-07-12 16:51:48

标签: javascript

我有一系列候选人:

candidacies = service.getCandidacies();

每个候选资格都是一个对象,例如:

{ id: 1, isHired: true }, 
{ id: 4, isHired: false }, 
{ id: 8, isHired: false }

我需要在列表中设置isHired = falseid = 4isHired = true的候选人。我在数组中有更多对象。这是一个例子。

我尝试使用地图功能,但不确定如何使用它,或者甚至是否可能:

  candidacies = candidacies.map(function(x) {

  });

但我不确定如何或甚至可能......

4 个答案:

答案 0 :(得分:1)

假设您的对象在数组中:

candidacies = [
  { id: 1, isHired: true }, 
  { id: 4, isHired: false }, 
  { id: 8, isHired: false }
]

然后地图看起来像:

candidacies = candidacies.map(function(candidate, index) {
  candidate.isHired = candidate.id === 4; 
  return candidate;
})

答案 1 :(得分:1)

使用您自己的存根,最简单的方法是添加逻辑测试:

candidacies = candidacies.map(function(x) {
    x.isHired = x.id === 4;
    return x;
});

答案 2 :(得分:0)

您可以使用forEach(因为您正在更改变量):

var candidacies = [{ id: 1, isHired: true }, 
                   { id: 4, isHired: false }, 
                   { id: 8, isHired: false }];

candidacies.forEach(function(candidacy) {
  candidacy.isHired = (candidacy.id === 4);
});

console.log(candidacies);

如果你真的想使用map(如果将结果分配给另一个变量,这很好),你可以这样做:

var candidacies = [{ id: 1, isHired: true }, 
                   { id: 4, isHired: false }, 
                   { id: 8, isHired: false }];

var newCandidacies = candidacies.map(function(candidacy) {
  return Object.assign({}, candidacy, { isHired: (candidacy.id === 4) });
});

console.log(newCandidacies);

答案 3 :(得分:-1)

这看起来像是学生会问的一个问题,如果是这样的话我们就不会在这里为你解决你的功课。 map函数遍历数组并应用您定义的任何function()。无论哪种方式,您都可以运行一些console.log(x)来查看它是如何工作的。祝你好运。