当前位置: 首页 > 面试题库 >

JavaScript一线从ES 6中的对象获取某些属性

单品
2023-03-14
问题内容

如何编写一个在ES6中仅以最紧凑的方式仅包含很少的属性的函数?

我想出了使用解构+简化对象文字的解决方案,但是我不喜欢代码中重复的字段列表。

有没有更苗条的解决方案?

(v) => {
    let { id, title } = v;
    return { id, title };
}

问题答案:

尽管不能避免重复字段列表,但这里有些苗条。它使用“参数解构”来避免需要该v参数。

({id, title}) => ({id, title})

@EthanBrown的解决方案更为通用。这是它的更惯用的版本,它使用Object.assign和计算的属性([p]部分):

function pick(o, ...props) {
    return Object.assign({}, ...props.map(prop => ({[prop]: o[prop]})));
}

如果我们要保留属性的属性(例如和configurable和getter和setter),同时也忽略不可枚举的属性,则:

function pick(o, ...props) {
    var has = p => o.propertyIsEnumerable(p),
        get = p => Object.getOwnPropertyDescriptor(o, p);

    return Object.defineProperties({},
        Object.assign({}, ...props
            .filter(prop => has(prop))
            .map(prop => ({prop: get(props)})))
    );
}


 类似资料:
  • 如果我有一个物体 并创建这些对象的数组 有没有一种方法可以让我只检索数组中所有对象的一个属性?例如: 上面的示例没有将set keyArray返回给任何东西,但我希望它可以设置成如下所示: 有没有人知道这样做的方法,而不需要遍历objArray并手动将每个键属性复制到键数组?

  • 我有一个目标。我想通过删除除某些特定属性之外的所有属性来修改对象(而不是克隆它)。例如,如果我从这个对象开始: 并且只需要属性p1、p2和p100,如何获得此对象: 我明白如何用蛮力做到这一点,但我想要一个更优雅的解决方案。

  • 问题内容: 基本上,我有一个带有的表单,用于选择要使用的数据集(值分别为“ m”,“ f”和“ c”)。然后,我有一个字典/对象,其数据位于: 现在我需要/ / 但我不知道如何使用语法-我已经试过: 什么是正确的语法/方法? 问题答案: 由于您是通过变量引用属性,因此需要使用括号表示法。 …这与您传递字符串时使用的表示法相同。

  • 我有一个这样的数组: 获得只有值的数组的最简洁的ES6方法是什么? 预期结果将是:

  • 我有一个包含如下值的对象 这些都在变量autossuggest中。现在我只想获得值 谢谢你的小费

  • 问题内容: 如果我有这样的JSON对象: 属性的名称(这里)每次都在变化,我怎么能仅仅通过JS 获得子属性?目前我有,但是现在我怎么能得到它的孩子呢? 问题答案: 如果它始终是的第一个属性,则可以执行以下操作: