为什么Object的Array属性总是返回对象

时间:2017-06-01 08:02:17

标签: javascript object

如何将对象属性转换为数组并像数组一样使用它? 我想访问一个Object的属性数组。但它作为一个对象返回。

我不必检查其类型是否为数组。但我想像普通的javascript数组那样迭代它。

var obj = {PhaseId: "", OptionDescription: "", PhaseDescription: "", 'ClassId': ['test','test1] };

console.log( typeof obj.classId) // return obj

6 个答案:

答案 0 :(得分:1)

像这样(你的样本中有一个拼写错误)

var obj = {
    PhaseId: "", 
    OptionDescription: "", 
    PhaseDescription: "", 
    classId: ['test','test1'] }; 
console.log( obj.classId[1]);  // logs "test1"

答案 1 :(得分:0)

基本上你得到了对象。因为数组元素只包含数字键。 Object元素可以是(string,Numeric,boolean,obejct和array)。这里你的内部obj元素ClassId是另一个数组。而Array也是一个Object。这就是你得到object的原因。

因此,您可以使用所有Array类型的Object但Object不是数组。

同样在您的示例中,您犯了一个错误,您使用了像classId这样的'classId'。当您classID调用var classId = obj.classId时,此classId的行为就像一个数组,它的元素索引从0开始。要检查它的数组是否使用Array.isArray(classId)

    var obj = {
        PhaseId: "", 
        OptionDescription: "", 
        PhaseDescription: "", 
        classId: ['test','test1'] }; 
    var classId = obj.classId;
    console.log(Array.isArray(classId)); // returns boolean
    console.log(classId[0])

答案 2 :(得分:0)

object operator是欺骗性的,只会告诉您Array.isArray()数组(因为技术上是一个对象)。

使用ServletContextListener测试数组。

答案 3 :(得分:0)

像Rahul Amin一样,在他的答案数组中说是一个对象,但是对象并不总是数组。

{{1}}

答案 4 :(得分:0)

您的第一个回答的答案与this post

相关联

第二部分

  

并像数组一样使用它?

IF 您在json数据中收到一个数组作为键,如果格式正确,您可以提取值并立即使用它,而不必担心其他任何问题。这基本上是obj.classId[index];

答案 5 :(得分:0)

尝试这种方法:

var obj = {PhaseId: "", OptionDescription: "", PhaseDescription: "", 
           ClassId: ['test','test1'] };

console.log(Array.isArray(obj.ClassId)); // return true

您可以使用如下的数组方法进行迭代:

var obj = {PhaseId: "", OptionDescription: "", PhaseDescription: "", 
           ClassId: ['test','test1'] };

// log array each element to the console
obj.ClassId.forEach( i => console.log(i));

// create a new array
var array0 = obj.ClassId.map( i => i );

// log array0 to the console
console.log(array0);

var array1 = obj.ClassId.map(i => i + ' passed ' );

// log array1 to the console
console.log(array1);

取决于你想要对数组做什么或者从数组中得到什么你使用的是特殊的数组方法:

Array Methods