请帮助解决问题。
我有跟随对象:
defaults = {
title: undefined,
yMax: undefined,
yMin: undefined,
yPeriod: undefined,
xMax: undefined,
xMin: undefined,
xPeriod: undefined,
dots: {}
}
我需要获取“非对象”类型的属性数组。
即。我需要得到关注:
[title, yMax, yMin, yPeriod, xMax, xMin, xPeriod]
答案 0 :(得分:1)
您可以使用txtCASEID.Text
typeof

答案 1 :(得分:1)
ES6中只有一行Object.keys()
和Array#filter()
:
var defaults = { title: undefined, yMax: undefined, yMin: undefined, yPeriod: undefined, xMax: undefined, xMin: undefined, xPeriod: undefined, dots: {} },
keys = Object.keys(defaults).filter(a => typeof defaults[a] !== 'object');
document.write('<pre>' + JSON.stringify(keys, 0, 4) + '</pre>');
&#13;
或者ES5也是单行
var defaults = { title: undefined, yMax: undefined, yMin: undefined, yPeriod: undefined, xMax: undefined, xMin: undefined, xPeriod: undefined, dots: {} },
keys = Object.keys(defaults).filter(function (a) { return typeof defaults[a] !== 'object'; });
document.write('<pre>' + JSON.stringify(keys, 0, 4) + '</pre>');
&#13;
答案 2 :(得分:0)
如果您想要实现所有功能风格,可以合并Object.keys
,Array.prototype.filter
和Array.prototype.map
。
var arr = Object.keys(defaults).filter(function(key) {
return typeof defaults[key] !== 'object';
}).map(function(key) {
return defaults[key];
});
或者使用ES6编写相同的东西:
let arr = Object.keys(default)
.filter(key => typeof defaults[key] !== 'object')
.map(key => defaults[key]);
这将获得默认值中不是对象的所有内容的值(这意味着数组也将被排除)。如果您只想要密钥,只需删除map
功能。