JavaScript 将对象转换为数组

发布时间 2023-10-24 10:14:05作者: 飞仔FeiZai

JavaScript 将对象转换为数组

在 JavaScript 中,你可以使用不同的方法将对象转换为数组,具体取决于对象的结构和你希望在数组中得到什么样的数据。以下是一些常见的方法:

  1. Object.keys() 方法: 这种方法将对象的键转换为数组。

    const obj = { a: 1, b: 2, c: 3 };
    const arr = Object.keys(obj);
    console.log(arr); // 输出 [a, b, c]
    
  2. Object.values() 方法: 这种方法将对象的值转换为数组。

    const obj = { a: 1, b: 2, c: 3 };
    const arr = Object.values(obj);
    console.log(arr); // 输出 [1, 2, 3]
    
  3. Object.entries() 和 map(): 这种方法将对象的键值对转换为数组的元素。

    • 情形一

      const obj = { a: 1, b: 2, c: 3 };
      const arr = Object.entries(obj).map(([key, value]) => [key, value]);
      console.log(arr); // 输出 [['a', 1], ['b', 2], ['c', 3]]
      
    • 情形二

      const data = {
        apple: {
          name: "apple",
          count: 6,
        },
        pear: {
          name: "pear",
          count: 9,
        },
        banana: {
          name: "banana",
          count: 5,
        },
      };
      
      // 将对象转换为数组
      const dataArray = Object.entries(data).map(([key, value]) => ({
        key,
        ...value,
      }));
      
      // 按照 count 属性升序排序
      dataArray.sort((a, b) => a.count - b.count);
      
      /* 输出:
      [
          {
          key: "banana",
          name: "banana",
          count: 5,
          },
          {
          key: "apple",
          name: "apple",
          count: 6,
          },
          {
          key: "pear",
          name: "pear",
          count: 9,
          },
      ]; */
      
  4. 使用循环迭代对象属性: 你可以使用 for...in 循环来迭代对象的属性,并将它们添加到数组中。

    const obj = { a: 1, b: 2, c: 3 };
    const arr = [];
    for (const key in obj) {
      if (obj.hasOwnProperty(key)) {
        arr.push(obj[key]);
      }
    }
    console.log(arr); // 输出 [1, 2, 3]
    

选择哪种方法取决于你的需求和对象的结构。如果对象包含非数组或非数字键,你可能需要结合使用不同的方法来满足你的要求。