如何从对象中选择某些属性?

时间:2016-04-11 17:14:13

标签: javascript

请帮助解决问题。

我有跟随对象:

  defaults = {
    title: undefined,
    yMax: undefined,
    yMin: undefined,
    yPeriod: undefined,
    xMax: undefined,
    xMin: undefined,
    xPeriod: undefined,
    dots: {}
  }

我需要获取“非对象”类型的属性数组。

即。我需要得到关注:

[title, yMax, yMin, yPeriod, xMax, xMin, xPeriod]

3 个答案:

答案 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;
&#13;
&#13;

或者ES5也是单行

&#13;
&#13;
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;
&#13;
&#13;

答案 2 :(得分:0)

如果您想要实现所有功能风格,可以合并Object.keysArray.prototype.filterArray.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功能。