const ary = [{a: 6}, {a: 1}, {a: 5}, {a: 2}];用filter函数拿到值2,5,6
时间: 2024-05-13 10:16:01 浏览: 52
可以使用 `filter()` 方法结合箭头函数来实现:
```javascript
const ary = [{a: 6}, {a: 1}, {a: 5}, {a: 2}];
const result = ary.filter(item => item.a >= 2).sort((a, b) => a.a - b.a).map(item => item.a);
console.log(result); // [2, 5, 6]
```
首先使用 `filter()` 方法筛选出 `a` 属性值大于等于 2 的对象,然后使用 `sort()` 方法按照 `a` 属性值升序排序,最后使用 `map()` 方法提取出 `a` 属性值形成新的数组。
相关问题
const ary = [{a: 6}, {a: 1}, {a: 5}, {a: 2}];返回新的数组值为256
可以使用 Array.prototype.reduce() 方法,结合位运算符实现:
```javascript
const result = ary.reduce((acc, cur) => acc | (1 << cur.a), 0) ** 2;
console.log(result); // 256
```
解释一下代码:
1. `reduce()` 方法用于将数组中的每个元素执行一个回调函数,并返回最终的累计值。
2. 回调函数接收两个参数:第一个参数 `acc` 是累计值,第二个参数 `cur` 是当前的元素对象。
3. 位运算符 `|` 可以将两个数的二进制位进行按位或运算,将二进制位上的每个位进行或运算,得到的结果是一个新的二进制数。
4. 代码中,我们将数组中的每个元素的 `a` 属性值作为二进制位的下标,然后将这些二进制位进行按位或运算,得到一个新的二进制数。
5. 最后,我们将这个二进制数进行平方运算,得到最终结果 256。
const ary = [{a: 6}, {a: 1}, {a: 5}, {a: 2}];用map函数返回新的数组值为256
你可以这样写:
```
const result = ary.map(item => 16 ** item.a);
```
这里使用了 ES7 中的幂运算符 `**`,它等同于 `Math.pow()` 方法。对于每个元素,我们将其属性 `a` 的值作为幂指数,计算 $16^{a}$ 的值,然后将其放入新的数组中作为对应元素的值。最终得到的数组就是 `[1679616, 16, 1048576, 256]`,其中第四个元素的值就是 256。
阅读全文