cqwcns 发表于 2022-10-15 22:57

JS,对象值转数组的方法

我的需求是将对象的全部值,转数组,即不要key了,具体见代码。
我通过for in已经实现了需求。
但感觉这样写很冗余,不优雅。
我不知道对象是否可以使用map等方式实现这个需求。


怎样写最简洁?
请各位大佬交流、指正,感谢。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>

      // 需求是将对象的全部值转为数组,即不要key了。

      const obj = {
            name: '唐伯虎',
            age: '17',
            phone: '168'
      },
            arr = [];
      for (let key in obj) {
            arr.push(obj)
      }

      console.log('arr', arr)
      // ['唐伯虎', '17', '168']

    </script>
</body>

</html>

linguo2625469 发表于 2022-10-15 23:06

使用Object.values 即可const obj1 = { foo: 'bar', baz: 42 }
console.log(Object.values(obj1)) // ['bar', 42]

const obj2 = { 0: 'a', 1: 'b', 2: 'c' }
console.log(Object.values(obj2)) // ['a', 'b', 'c']

侠骨留香喵 发表于 2022-10-15 23:12

Object.values() 方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用 for...in 循环的顺序相同(区别在于 for-in 循环枚举原型链中的属性)。来自MDN

Takitooru 发表于 2022-10-15 23:35

本帖最后由 Takitooru 于 2022-10-15 23:37 编辑

map方法

```
const obj = {
            name: '唐伯虎',
            age: '17',
            phone: '168'
      }
//方式1
console.log( Object.keys(obj).map(function(index, item) { return obj }) );
//['唐伯虎', '17', '168']
//方式2
console.log( Object.keys(obj).map(function(i) { return obj }) );
//['唐伯虎', '17', '168']
```

yqesl1 发表于 2022-10-16 06:12

map就可以了 ,唐伯虎才168不相信,至少186吧,单位cm
页: [1]
查看完整版本: JS,对象值转数组的方法