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

标签 javascript arrays object properties

我有一个猫对象数组,我必须使用映射函数将“readyForHome”属性从字符串"is"“否”更改为 bool 值 true 或 false。它将成为对数组执行各种其他操作的函数的一部分。

我对高阶函数还很陌生,我在这里读到的所有内容似乎都不适合我。有人知道如何解决这个问题吗?

 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']}
];

最佳答案

您应该使用一个函数,它接受您的cat对象并相应地更改它的readyForHome属性,作为回调 用于 map() 方法。

这就是您所需要的:

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

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);

关于javascript - 使用map,如何将对象属性中的yes和no字符串转换为javascript中的 bool true和false值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43231987/

相关文章:

JavaScript:函数不返回任何内容(vscode + Quokka.js)

javascript - AJAX HTTP GET 请求必须触发两次才能工作

arrays - 从 R 中至少具有最小差异的数组中选择随机元素的最佳方法

javascript - 通过递增计数将键编号分配给对象中的键

JavaScript 对象 : Destroying them

javascript - 如何将对象键转换为大写

javascript - 当我使用 $stateParams 时 map 返回 -1

javascript - 如何根据另一个选择值有条件地加载选择选项

c++ - 如何将 array<int, 6> 传递给函数

ios - 使用枚举迭代CGPoint数组以创建多个 Sprite