首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用map将对象属性中的yes和no字符串转换为javascript中的布尔值true和false

如何使用map将对象属性中的yes和no字符串转换为javascript中的布尔值true和false
EN

Stack Overflow用户
提问于 2017-04-05 20:59:49
回答 3查看 116关注 0票数 1

我有一个cat对象数组,我必须使用map函数将"readyForHome“属性从字符串”Yes“”No“更改为布尔值true或false。它将是对数组执行各种其他操作的函数的一部分。

我对高阶函数非常陌生,我在这里读到的所有东西似乎对我都不起作用。有没有人知道他们会如何处理这个问题?

代码语言:javascript
运行
复制
 var cats = [
  { id: '1', name: 'rupert', readyForHome: 'No', age: 12, personality: ['friendly', 'lazy', 'loving']},
  { id: '2', name: 'mrs fluffy', readyForHome: 'Yes', age: 2, personality: ['affectionate', 'playful', 'shy']},
  { id: '3', name: 'tabitha', readyForHome: 'Yes', age: 4, personality: ['aggressive', 'independent']},
  { id: '4', name: 'lily', readyForHome: 'No', age: 8, personality: ['friendly', 'playful', 'mischievous']},
  { id: '5', name: 'stripe', readyForHome: 'Yes', age: 1, personality: ['haughty', 'independent']},
  { id: '6', name: 'bob', readyForHome: 'Yes', age: 1, personality: ['aggressive', 'antisocial', 'nervous']},
  { id: '7', name: 'jean claude cat damme', readyForHome: 'Yes', age: 11, personality: ['sleepy', 'shy', 'loving']},
  { id: '8', name: 'tilly', readyForHome: 'Yes', age: 4, personality: ['playful', 'social', 'attention-seeking']},
  { id: '9', name: 'milo', readyForHome: 'No', age: 7, personality: ['mischievous', 'friendly']},
  { id: '10', name: 'mr claws', readyForHome: 'Yes', age: 13, personality: ['affectionate', 'shy', 'nervous']},
  { id: '11', name: 'robert zimmercat', readyForHome: 'Yes', age: 3, personality: ['folksy', 'prolific', 'neurotic']}
];

EN

回答 3

Stack Overflow用户

发布于 2017-04-05 21:03:34

代码语言:javascript
运行
复制
 var cats = [
  { id: '1', name: 'rupert', readyForHome: 'No', age: 12, personality: ['friendly', 'lazy', 'loving']},
  { id: '2', name: 'mrs fluffy', readyForHome: 'Yes', age: 2, personality: ['affectionate', 'playful', 'shy']},
  { id: '3', name: 'tabitha', readyForHome: 'Yes', age: 4, personality: ['aggressive', 'independent']},
  { id: '4', name: 'lily', readyForHome: 'No', age: 8, personality: ['friendly', 'playful', 'mischievous']},
  { id: '5', name: 'stripe', readyForHome: 'Yes', age: 1, personality: ['haughty', 'independent']},
  { id: '6', name: 'bob', readyForHome: 'Yes', age: 1, personality: ['aggressive', 'antisocial', 'nervous']},
  { id: '7', name: 'jean claude cat damme', readyForHome: 'Yes', age: 11, personality: ['sleepy', 'shy', 'loving']},
  { id: '8', name: 'tilly', readyForHome: 'Yes', age: 4, personality: ['playful', 'social', 'attention-seeking']},
  { id: '9', name: 'milo', readyForHome: 'No', age: 7, personality: ['mischievous', 'friendly']},
  { id: '10', name: 'mr claws', readyForHome: 'Yes', age: 13, personality: ['affectionate', 'shy', 'nervous']},
  { id: '11', name: 'robert zimmercat', readyForHome: 'Yes', age: 3, personality: ['folksy', 'prolific', 'neurotic']}
].map( cat => {
cat.readyForHome = (cat.readyForHome === 'Yes'); // true only if 'Yes'
return cat;
});
console.log(cats);

票数 0
EN

Stack Overflow用户

发布于 2017-04-05 21:12:24

您应该使用function,它接受您的cat对象并相应地更改其readyForHome属性,作为map()方法的callback

这就是你需要的:

代码语言:javascript
运行
复制
cats = cats.map(function(cat){
     cat.readyForHome.toUpperCase() === "YES" ? cat.readyForHome = true : cat.readyForHome = false;
     return cat;
});

代码语言:javascript
运行
复制
var cats = [{
    id: '1',
    name: 'rupert',
    readyForHome: 'No',
    age: 12,
    personality: ['friendly', 'lazy', 'loving']
  },
  {
    id: '2',
    name: 'mrs fluffy',
    readyForHome: 'Yes',
    age: 2,
    personality: ['affectionate', 'playful', 'shy']
  },
  {
    id: '3',
    name: 'tabitha',
    readyForHome: 'Yes',
    age: 4,
    personality: ['aggressive', 'independent']
  },
  {
    id: '4',
    name: 'lily',
    readyForHome: 'No',
    age: 8,
    personality: ['friendly', 'playful', 'mischievous']
  },
  {
    id: '5',
    name: 'stripe',
    readyForHome: 'Yes',
    age: 1,
    personality: ['haughty', 'independent']
  },
  {
    id: '6',
    name: 'bob',
    readyForHome: 'Yes',
    age: 1,
    personality: ['aggressive', 'antisocial', 'nervous']
  },
  {
    id: '7',
    name: 'jean claude cat damme',
    readyForHome: 'Yes',
    age: 11,
    personality: ['sleepy', 'shy', 'loving']
  },
  {
    id: '8',
    name: 'tilly',
    readyForHome: 'Yes',
    age: 4,
    personality: ['playful', 'social', 'attention-seeking']
  },
  {
    id: '9',
    name: 'milo',
    readyForHome: 'No',
    age: 7,
    personality: ['mischievous', 'friendly']
  },
  {
    id: '10',
    name: 'mr claws',
    readyForHome: 'Yes',
    age: 13,
    personality: ['affectionate', 'shy', 'nervous']
  },
  {
    id: '11',
    name: 'robert zimmercat',
    readyForHome: 'Yes',
    age: 3,
    personality: ['folksy', 'prolific', 'neurotic']
  }
];


cats = cats.map(function(cat) {
  cat.readyForHome.toUpperCase() === "YES" ? cat.readyForHome = true : cat.readyForHome = false;
  return cat;
});
console.log(cats);

票数 0
EN

Stack Overflow用户

发布于 2017-04-23 17:00:57

代码语言:javascript
运行
复制
  var catMap = arr.map(function (cat) {
  cat.readyForHome = cat.readyForHome === 'Yes' ? true : false;
    return cat;

})

这就是我最终得到的结果。很抱歉我没有发布我之前关于黑客攻击的内容。我刚开始使用Stack Overflow,老实说,我都忘了我发过这个问题了!感谢大家抽出时间来回答:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43231987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档