我有一个cat对象数组,我必须使用map函数将"readyForHome“属性从字符串”Yes“”No“更改为布尔值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']}
];
发布于 2017-04-05 21:03:34
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);
发布于 2017-04-05 21:12:24
您应该使用function
,它接受您的cat
对象并相应地更改其readyForHome
属性,作为map()
方法的callback
。
这就是你需要的:
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);
发布于 2017-04-23 17:00:57
var catMap = arr.map(function (cat) {
cat.readyForHome = cat.readyForHome === 'Yes' ? true : false;
return cat;
})
这就是我最终得到的结果。很抱歉我没有发布我之前关于黑客攻击的内容。我刚开始使用Stack Overflow,老实说,我都忘了我发过这个问题了!感谢大家抽出时间来回答:)
https://stackoverflow.com/questions/43231987
复制相似问题