【发布时间】:2021-08-15 15:58:50
【问题描述】:
我在一个名为“Person”的数组中有一个对象。 在对象“Person”中,有一个名为“info”的数组。 我的目标是在按“性别:男性”过滤时,在数组“信息”中获取前缀为“年龄:”的所有值。所以,我想要的输出将是 1 到 9,因为我还想删除重复项。
以下是我的代码,但结果只有两个值(1 和 4)。也许输出是每人一个值。 我花了很多时间玩代码,但没有运气。这就是为什么我把我的问题提出来,希望任何这方面的专家可以帮助我。
<script>
var array = [
{
"person": {
"info": [
"age:1",
"age:2",
"age:3",
"age:4",
"age:5",
"age:6",
"gender:male"
]
},
"person": {
"info": [
"age:4",
"age:5",
"age:6",
"age:7",
"age:8",
"age:9",
"gender:male"
]
},
"person": {
"info": [
"age:8",
"age:9",
"age:10",
"age:11",
"age:12",
"age:13",
"gender:female"
]
}
}
]
var filteredAges = [];
for (i = 0; i < array.length; i++) {
var infoGroup = array[i].person.info,
ageGroup = [];
for (j = 0; j < infoGroup.length; j++) {
ageGroup.push(infoGroup[j]);
var ageInfo = ageGroup.find(ages => ages.includes('age:'));
};
if (ageInfo) {
if (filteredAges.indexOf(ageInfo) == -1) {
filteredAges.push(ageInfo)
}
}
}
for (i = 0;i < filteredAges.length; i++) {
console.log(filteredAges[i]);
}
</script>
【问题讨论】:
-
find方法返回满足条件的数组的第一个元素。首先将age:4粘贴到数组ageGroup中,然后找到该数组的第一个元素,它包含age:。下一次迭代 - 你将age:5推入你的数组,你的数组现在包含age:4、age:5。现在您再次寻找包含age:的第一个元素……当然,仍然是age:4。 -
你是对的。我的问题的原因是 find()。我用 filter() 替换了它,它现在可以工作了。谢谢
标签: javascript jquery arrays json