У меня есть массив объектов с некоторыми свойствами в виде строковых значений, может кто-то поможет мне получить массив чисел из него. Вот массив выглядит.
scores = [
{
maxScore:"100"
obtainedScore:"79"
passed:"pass"
subject:"Maths"
},
{
maxScore:"100"
obtainedScore:"73"
passed:"pass"
subject:"Science"
},
{
maxScore:"100"
obtainedScore:"82"
passed:"pass"
subject:"English"
}
]
я хочу, чтобы полученныеScore и maxScore должны быть выведены из этих объектов и помещены в два разных массива
я попробовал это
for (var i =0 ; i < score.length; i++)
{
var marks[i] = parseInt(score[i].obtainedScore) ;
}
и я нашел NaN.
ПРАВИЛЬНЫЙ ОТВЕТ НА ОСНОВЕ ВАШЕГО ПОПЫТКА:
var scores = [{
maxScore: "100",
obtainedScore: "79",
passed: "pass",
subject: "Maths"
}, {
maxScore: "100",
obtainedScore: "73",
passed: "pass",
subject: "Science"
}, {
maxScore: "100",
obtainedScore: "82",
passed: "pass",
subject: "English"
}]
var marks = [];
for (var i = 0; i < scores.length; i++) {
marks[i] = parseInt(scores[i].obtainedScore, 10);
}
console.log(marks)
МОЙ СОЛН (от того, как вы вступили в вашу попытку)
var scores = [{
maxScore: "100",
obtainedScore: "79",
passed: "pass",
subject: "Maths"
}, {
maxScore: "100",
obtainedScore: "73",
passed: "pass",
subject: "Science"
}, {
maxScore: "100",
obtainedScore: "82",
passed: "pass",
subject: "English"
}]
function decoupler(arr, prop) {
return arr.map(function(item, index) {
return parseInt(item[prop], 10);
});
}
var arr1 = decoupler(scores, "maxScore");
var arr2 = decoupler(scores, "obtainedScore");
console.log(arr1);
console.log(arr2);
Изменение: добавлен параметр radix для parseInt()
на основе комментария jfriend00.
как насчет отображения проекции?
var maxScores = scores.map(score => parseInt(score.maxScore, 10))
var obtainedScores = scores.map(score => parseInt(score.obtainedScore, 10))
Я не уверен на 100%, что вы хотите, но результат:
я хочу, чтобы полученныеScore и maxScore должны быть выведены из этих объектов и помещены в два разных массива
var arrScore = [],
arrMax = [];
scores.forEach(i => {
arrScore.push(!isNaN(parseInt(i.obtainedScore)) ? parseInt(i.obtainedScore) : 0);
arrMax.push(!isNaN(parseInt(i.maxScore)) ? parseInt(i.maxScore) : 0);
});
В основном это создает две массивы arrScore
которые будут содержать каждое отдельное значение оценки и arrMax
который содержит массив максимальных оценок.
Используя forEach
мы перебираем массив и вставляем значения в соответствующие массивы. Примечание. Для этого мы также гарантируем, что тип является действительным целым числом.
scores = [
{
maxScore:"100",
obtainedScore:"79",
passed:"pass",
subject:"Maths"
},
{
maxScore:"100",
obtainedScore:"73",
passed:"pass",
subject:"Science"
},
{
maxScore:"100",
obtainedScore:"82",
passed:"pass",
subject:"English"
}
];
maxScoreArray = new Array();
obtainedScoreArray = new Array();
for (var i = scores.length - 1; i >= 0; i--) {
maxScoreArray.push(Number(scores[i].maxScore));
obtainedScoreArray.push(Number(scores[i].obtainedScore));
}
console.log(maxScoreArray);
console.log(obtainedScoreArray);