如何将对象属性转换为数组并像数组一样使用它? 我想访问一个Object的属性数组。但它作为一个对象返回。
我不必检查其类型是否为数组。但我想像普通的javascript数组那样迭代它。
var obj = {PhaseId: "", OptionDescription: "", PhaseDescription: "", 'ClassId': ['test','test1] };
console.log( typeof obj.classId) // return obj
答案 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);
取决于你想要对数组做什么或者从数组中得到什么你使用的是特殊的数组方法: