按参数过滤数组
Filtering array by parameter
我有一个数组:
const submissions = [
{
question: 'blah blah blah ?',
response: 'blah blah blah',
isCorrect: true,
isEssayQuestion: false
},
{
question: 'blah blah blah blah',
response: 'blah blah blah',
isCorrect: true,
isEssayQuestion: false
},
{
question: 'blah blah blah ?',
response: 'blah blah blah blah',
isCorrect: true,
isEssayQuestion: true
},
{
question: 'True or False: I am new to JS.',
response: 'True',
isCorrect: true,
isEssayQuestion: false
}
];
该函数接受提交数组和一个布尔参数。
function filterQuestionsByType(submissions, essayquestion) {
let trueEssay = [];
let falseEssay = [];
for (let i = 0; i < submissions.length; i++) {
if ( essayquestion === true) {
if ( submissions[i].isEssayQuestion === true) {
trueEssay.push(submissions[i]);
} else {
falseEssay.push(submissions[i]);
}
}
}
if (essayquestion === true) {
return trueEssay;
} else {
return falseEssay;
}
}
如果为 true,我需要 return 一个数组,其中包含 isEssayQuestion 为 true 的所有条目。如果为假,则相同。它适用于 true 但不是 false。想法?
Array.prototype.filter()
完全符合目的:
const src = [{question:'blah blah blah ?',response:'blah blah blah',isCorrect:true,isEssayQuestion:false},{question:'blah blah blah blah',response:'blah blah blah',isCorrect:true,isEssayQuestion:false},{question:'blah blah blah ?',response:'blah blah blah blah',isCorrect:true,isEssayQuestion:true},{question:'True or False: I am new to JS.',response:'True',isCorrect:true,isEssayQuestion:false}],
filterQuestionsByType = (submissions, essayquestions) =>
submissions.filter(({isEssayQuestion}) => isEssayQuestion == essayquestions)
console.log(filterQuestionsByType(src, true))
好吧,就用.filter
这个案例的方法
const submissions = [
{
question: 'blah blah blah ?',
response: 'blah blah blah',
isCorrect: true,
isEssayQuestion: false
},
{
question: 'blah blah blah blah',
response: 'blah blah blah',
isCorrect: true,
isEssayQuestion: false
},
{
question: 'blah blah blah ?',
response: 'blah blah blah blah',
isCorrect: true,
isEssayQuestion: true
},
{
question: 'True or False: I am new to JS.',
response: 'True',
isCorrect: true,
isEssayQuestion: false
}
];
function essays(essay, question) {
return essay.filter(({isEssayQuestion}) => isEssayQuestion === question)
}
console.log(essays(submissions, false));
console.log("------------------------------------");
console.log(essays(submissions, true));
这是另一种方法。您可以简单地将 source-array 映射到新对象属性 (sortedValues) 并将结果写入。此方法仅 运行 一次,而不是其他示例,您需要 运行 两次 - 真假。
const submissions = [
{
question: 'blah blah blah ?',
response: 'blah blah blah',
isCorrect: true,
isEssayQuestion: false
},
{
question: 'blah blah blah blah',
response: 'blah blah blah',
isCorrect: true,
isEssayQuestion: false
},
{
question: 'blah blah blah ?',
response: 'blah blah blah blah',
isCorrect: true,
isEssayQuestion: true
},
{
question: 'True or False: I am new to JS.',
response: 'True',
isCorrect: true,
isEssayQuestion: false
}
];
const sortedValues = {
trueValues: [],
falseValues: []
}
submissions.map(item => {
sortedValues[`${item.isEssayQuestion}Values`] = [...sortedValues[`${item.isEssayQuestion}Values`], item]
})
console.log(JSON.stringify(sortedValues, 2,2))
我有一个数组:
const submissions = [
{
question: 'blah blah blah ?',
response: 'blah blah blah',
isCorrect: true,
isEssayQuestion: false
},
{
question: 'blah blah blah blah',
response: 'blah blah blah',
isCorrect: true,
isEssayQuestion: false
},
{
question: 'blah blah blah ?',
response: 'blah blah blah blah',
isCorrect: true,
isEssayQuestion: true
},
{
question: 'True or False: I am new to JS.',
response: 'True',
isCorrect: true,
isEssayQuestion: false
}
];
该函数接受提交数组和一个布尔参数。
function filterQuestionsByType(submissions, essayquestion) {
let trueEssay = [];
let falseEssay = [];
for (let i = 0; i < submissions.length; i++) {
if ( essayquestion === true) {
if ( submissions[i].isEssayQuestion === true) {
trueEssay.push(submissions[i]);
} else {
falseEssay.push(submissions[i]);
}
}
}
if (essayquestion === true) {
return trueEssay;
} else {
return falseEssay;
}
}
如果为 true,我需要 return 一个数组,其中包含 isEssayQuestion 为 true 的所有条目。如果为假,则相同。它适用于 true 但不是 false。想法?
Array.prototype.filter()
完全符合目的:
const src = [{question:'blah blah blah ?',response:'blah blah blah',isCorrect:true,isEssayQuestion:false},{question:'blah blah blah blah',response:'blah blah blah',isCorrect:true,isEssayQuestion:false},{question:'blah blah blah ?',response:'blah blah blah blah',isCorrect:true,isEssayQuestion:true},{question:'True or False: I am new to JS.',response:'True',isCorrect:true,isEssayQuestion:false}],
filterQuestionsByType = (submissions, essayquestions) =>
submissions.filter(({isEssayQuestion}) => isEssayQuestion == essayquestions)
console.log(filterQuestionsByType(src, true))
好吧,就用.filter
这个案例的方法
const submissions = [
{
question: 'blah blah blah ?',
response: 'blah blah blah',
isCorrect: true,
isEssayQuestion: false
},
{
question: 'blah blah blah blah',
response: 'blah blah blah',
isCorrect: true,
isEssayQuestion: false
},
{
question: 'blah blah blah ?',
response: 'blah blah blah blah',
isCorrect: true,
isEssayQuestion: true
},
{
question: 'True or False: I am new to JS.',
response: 'True',
isCorrect: true,
isEssayQuestion: false
}
];
function essays(essay, question) {
return essay.filter(({isEssayQuestion}) => isEssayQuestion === question)
}
console.log(essays(submissions, false));
console.log("------------------------------------");
console.log(essays(submissions, true));
这是另一种方法。您可以简单地将 source-array 映射到新对象属性 (sortedValues) 并将结果写入。此方法仅 运行 一次,而不是其他示例,您需要 运行 两次 - 真假。
const submissions = [
{
question: 'blah blah blah ?',
response: 'blah blah blah',
isCorrect: true,
isEssayQuestion: false
},
{
question: 'blah blah blah blah',
response: 'blah blah blah',
isCorrect: true,
isEssayQuestion: false
},
{
question: 'blah blah blah ?',
response: 'blah blah blah blah',
isCorrect: true,
isEssayQuestion: true
},
{
question: 'True or False: I am new to JS.',
response: 'True',
isCorrect: true,
isEssayQuestion: false
}
];
const sortedValues = {
trueValues: [],
falseValues: []
}
submissions.map(item => {
sortedValues[`${item.isEssayQuestion}Values`] = [...sortedValues[`${item.isEssayQuestion}Values`], item]
})
console.log(JSON.stringify(sortedValues, 2,2))