【问题标题】:how can I convert Object to Array如何将对象转换为数组
【发布时间】:2018-12-12 14:42:42
【问题描述】:
[ { id: '5b3a223296fb381a29cf6fd9',
number: 1,
name: 'Tablet White EliteBook  Revolve 810 G2',
dprice: '0',
image: '' } ]

这是来自 Angular 应用程序的响应。当我检查它的类型时,它给出的结果是“对象”。

var savedCart = JSON.parse(req.body.cart);

当我使用这个查询时,它仍然是一个“对象”。 如何将其转换为数组?

【问题讨论】:

  • 这是一个包含 1 个元素的数组,它是一个对象。 typeof new Array() 确实返回对象,因为这就是数组。
  • 它是一个数组,而数组是对象。如果你想检查它是否是一个数组,请使用Array.isArray(variable)
  • 这个一个数组。然而,数组也是一个对象,所以如果你做了typeof savedCart,你会得到objectstackoverflow.com/questions/767486/…
  • typeof [] === "object" 使用 Array.isArray([]) developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • 您希望如何将其保存在数组中?请分享预期输出

标签: javascript node.js


【解决方案1】:

不幸的是,在 JavaScript 中,对象和数组都有'object'typeof。事实上,即使是 NULL 值也具有 'object'typeof,这让事情变得更糟。如果你想区分 JS 中存在的所有那些“想要的对象”,你应该使用类似的东西:

function smartTypeOf(x) {
    if (typeof x !== 'object') return typeof x;
    if (x === null) return 'null';
    if (Array.isArray(x)) return 'array';
    return 'object';
}

您也可以改用 instanceof,例如:

if (x instanceof Array) return 'array';
if (x instanceof Promise) return 'promise';
if (x instanceof YourCustomClassInstance) return 'yourcustomclassinstance'

顺便说一句,如果你有一个对象并且想要一个数组(这里不是这种情况,你!):

  • 如果对象是可迭代的,例如Setarguments 实例:

    var x = new Set([1, 2, 1]);
    Array.from(x); // [1, 2]
    
  • 如果对象是任何(非 NULL)对象,并且您想要其属性数组分别为 valueskeys

    var x = {a: 2, b: 4, c: 7};
    Object.values(x); // [2, 4, 7]
    Object.keys(x); // ['a', 'b', 'c']
    

【讨论】:

    猜你喜欢
    • 2018-02-13
    • 2022-01-23
    • 2011-01-29
    • 2018-07-27
    • 1970-01-01
    相关资源
    最近更新 更多