我想从对象数组中的Object中提取数据。 这就是它现在的样子:
Object
0: Object
id: "e0"
score: 0
1: Object
id: "e1"
score: 1
2: Object
id: "e2"
score: 2
3: Object
id: "e3"
score: "-"
4: Object
id: "e4"
score: "-"
问题:
如何获得最高得分值(2)并将其保存到变量?
请注意,还有" - "。
答案 0 :(得分:1)
该示例不是JavaScript中的对象数组。你展示的是一个使用数字作为键的对象。如果您想要从您显示的对象中检索最高score
值,则可以使用for..in构造迭代对象的可枚举属性。
因此,您必须遍历该对象,将您正在检查的当前score
与存储的最大值进行比较:
var max = 0;
for (var key in obj) {
if (obj[key].score && typeof obj[key].score === 'number' && obj[key].score > max) {
max = obj[key].score;
}
}
答案 1 :(得分:1)
你可以通过这样的方式处理数组:
var scores = [
{ id: 'e0', score: '2' },
{ id: 'e1', score: '0' },
{ id: 'e2', score: '-' },
{ id: 'e3', score: '1' }
];
scores
.map(obj => parseInt(obj.score)) // Transform each score to Integers
.filter(val => !isNaN(val)) // Filter the "Non Integer" values
.reduce((acc, val) => Math.max(acc, val), -1); // Find the highest value
答案 2 :(得分:0)
你可以遍历数组,如果分数大于你之前遇到的值,则存储分数:
.reloc
答案 3 :(得分:0)
您可以使用security vulnerability:
var items = [{id: "e0", score: '-' }, {id: "e1", score: 1 }, {id: "e2", score: 2},
{id: "e3", score: "-"}, {id: "e4", score: "-"}];
var max_score = items.reduce(function(previousValue, currentValue, currentIndex, arr) {
if (isNaN(previousValue.score)) {
return currentValue;
}
if (isNaN(currentValue.score)) {
return previousValue;
}
return (currentValue.score > previousValue.score) ? currentValue : previousValue;
}).score;
document.write('Reuslt = ' + max_score);