前言:真的很多时候觉得哈希Map好用爆了😂😂,不过数组对象相对来说是更灵活一点吧,两个东西灵活时候在开发的时候效率和问题解决,包括很多算法题的解决都能杠杠上去

获取数组对象中,对象中的某个值(key)为指定值

比如现在有个数组对象a

1
2
3
4
5
6
7
8
9
var a = [
{ age: 22, name: "AA" },
{ age: 23, name: "BB" },
{ age: 24, name: "CC" },
{ age: 25, name: "DD" },
{ age: 100, name: "EE" },
{ age: 100, name: 'FF' },
{ age: 200, name: 'RR' }
]

我想获取,age为100的对象

通过filter方法来实现,可以获取满足条件的数组对象

1
2
3
4
5
6
7
8
9
10
var a = [
{ age: 22, name: "AA" },
{ age: 23, name: "BB" },
{ age: 24, name: "CC" },
{ age: 25, name: "DD" },
{ age: 100, name: "EE" },
{ age: 100, name: 'FF' },
{ age: 200, name: 'RR' }
]
console.log(a.filter(item => item.age == 100))

获取数组对象中,某个key的数组

比如我要获取a的age的数组,可以通过map来实现

1
2
3
4
5
6
7
8
9
10
var a = [
{ age: 22, name: "AA" },
{ age: 23, name: "BB" },
{ age: 24, name: "CC" },
{ age: 25, name: "DD" },
{ age: 100, name: "EE" },
{ age: 100, name: 'FF' },
{ age: 200, name: 'RR' }
]
console.log(a.map(item => item.age))

扩展

另外map方法也可以对特定item中的某个的值进行判断,返回一个数组,如下,满足条件的对象的所处下标,在数组中是true

获取数组对象中某个属性的最大值或最小值

比如我想获取a中age最大的那个item

  • 首先用map吧age的数组输出到数组b
  • 然后用Math方法找到最大的age,用c保存起来
  • 然后找到该最大的age——c在数组b中的位置
  • 然后把这个index记下来
  • 然后输出原数组中该index位置下的对象即可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function getMaxObject(nums) {
var b = nums.map(item => item.age);
var c = Math.max.apply(Math, b);
index = b.indexOf(c);
if (index === -1) {
return false
} else {
return nums[index];
}
}
function getMinObject(nums) {
var b = nums.map(item => item.age);
var c = Math.min.apply(Math, b);
index = b.indexOf(c);
if (index === -1) {
return false
} else {
return nums[index];
}
}
const a = [
{ age: 22, name: "AA" },
{ age: 23, name: "BB" },
{ age: 24, name: "CC" },
{ age: 25, name: "DD" },
{ age: 100, name: "EE" },
{ age: 100, name: 'FF' },
{ age: 200, name: 'RR' }
]
console.log(getMaxObject(a));
console.log(getMinObject(a));