我解析/映射 i.values 中的2种不同类型的数据/对象:
我可以在控制台中看到
class a {
protected const SOMETHING = 'This is a!';
public static function outputSomething() {
return static::SOMETHING;
}
}
class b extends a {
//protected const SOMETHING = 'This is b!';
}
echo (new b())::outputSomething();
下一类数据/对象是:
(3) [1, 2, 3,__ob__: Observer]
0:1
1:2
2:3
length:3
__ob__: Observer {value: Array(3), dep: Dep, vmCount: 0}
__proto__:Array
这是我要解析/映射的代码:
{__ob__: Observer}
no: "I'm not"
not_sure: "I'm not sure"
yes: "I'm sure"
__ob__:Observer {value: {…}, dep: Dep, vmCount: 0}
代码在最后一个对象中失败:否:“我不是” ...
this.cstInputs.map(i => {
i.values = i.values.map((k, v) => {
return {
value: v,
label: k
}
});
}
我该如何分析这些不同类型的数据或通过Uncaught (in promise) TypeError: i.values.map is not a function...
之类的其他方法来区分它们以获得密钥对值?
谢谢
答案 0 :(得分:0)
您似乎需要确定i.values是数组还是对象(没有.map()方法)。
这里有一个很好的讨论:In javascript how can we identify whether an object is a Hash or an Array?。
可接受的答案提供以下代码段:
if(i.values.constructor == Array){
}
else if(i.values.constructor == Object){
}
答案 1 :(得分:0)
对象没有一个method = map(),因此抛出了错误Uncaught (in promise) TypeError: i.values.map is not a function
。
对于您的用例,使用Object.entries应该更好。
就像下面的演示一样:
let cstInputs = [
{'values': [1, 2, 3]},
{'values':
{
'no':'I am no',
'not_sure': 'I am not sure',
'yes': 'I am yes'
}
}
]
let result = cstInputs.map( (i) => {
return Object.entries(i.values).map( (item) => {
return {
value: item[0],
label: item[1]
}
})
})
console.log(result)