我有一个猫对象数组,我必须使用映射函数将“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/