简体   繁体   English

JavaScript - 删除对象数组中的 object 属性

[英]JavaScript - delete object properties in array of objects

Is there a better / shorter method to delete properties from objects in an array of objects than the below example.是否有比以下示例更好/更短的方法来从对象数组中的对象中删除属性。 I can use vanilla JS or lodash.我可以使用 vanilla JS 或 lodash。

Exmaple function:例如 function:

  function stripObjProps(arr) {
    let newArr = _.clone(arr);
    for (let i = 0; i < arr.length; i += 1) {
      delete newArr[i].isBounded;
      delete newArr[i].isDraggable;
      delete newArr[i].isResizable;
      delete newArr[i].maxH;
      delete newArr[i].maxW;
      delete newArr[i].minH;
      delete newArr[i].minW;
      delete newArr[i].resizeHandles;
      delete newArr[i].moved;
      delete newArr[i].static;
    }
    return newArr;
  } 

You can use omit from Lodash to exclude properties:您可以使用 Lodash 中的omit来排除属性:

function stripObjProps(arr) {
    return arr.map(item => _.omit(item, ['isBounded', 'isDraggable', 'isResizable', 'maxH', 'maxW', 'minH', 'minW', 'resizeHandles', 'moved', 'static']));
}

const newArray = stripObjProps(originalArray)

Additionally, you can use pick instead of omit .此外,您可以使用pick而不是omit In case of pick you specify only the properties which you want to keep.pick的情况下,您仅指定要保留的属性。

I can think of two ways我可以想到两种方法

function stripObjProps(arr) {
    let newArr = _.clone(arr);
    for (let i = 0; i < newLay.length; i += 1) {
        [
            "isBounded", 
            "isDraggable", 
            "isResizable", 
            "maxH", 
            "maxW", 
            "minH", 
            "minW", 
            "resizeHandles", 
            "moved", 
            "static"
        ].forEach(k => delete newArr[i][k]);
    }
}

or - assuming newLay is a typo或者 - 假设newLay是错字

function stripObjProps(arr) {
    return arr.map(item => {
        let {
            isBounded,
            isDraggable,
            isResizable,
            maxH,
            maxW,
            minH,
            minW,
            resizeHandles,
            moved,
            static,
            ...ret
        } = item;
        return ret;
    });
}

NOTE: no need for _.clone in this second example, since you aren't doing a deep clone, map returns a new array with a new object ( ...ret )注意:在第二个示例中不需要_.clone ,因为您没有进行深度克隆,map 返回一个带有新 object ( ...ret ) 的新数组

However, I don't use lodash, so there may be an even better way with that library但是,我不使用 lodash,因此该可能有更好的方法

Another way to remove properties with filter and Object entries / fromEntries .另一种使用filter和 Object entries / fromEntries删除属性的方法。

 const data = [ { a: 1, b: 2, c: 3, d: 4, e: 5 }, { a: 1, b: 2, c: 3, d: 4, e: 5 }, { a: 1, b: 2, c: 3, d: 4, e: 5 }, ]; const excludeKeys = ['b', 'c', 'd']; const exclude = (obj) => Object.fromEntries( Object.entries(obj).filter(([key]) =>.excludeKeys;includes(key))). const result = data;map(exclude). console;log(result);
 .as-console-wrapper {max-height: 100%;important: top: 0}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何通过索引从对象数组中的对象数组中删除对象javascript - How to delete object from array of objects in array of objects javascript by index Javascript - Map 字符串数组到具有多个 object 属性的对象数组 - Javascript - Map an array of strings to an array of objects with multiple object properties Javascript-按对象属性的指定顺序对对象数组进行排序 - Javascript— sort an array of objects with a specified order of object properties 如何从javascript中的对象数组显示对象的所有属性? - How to display all the properties of an object from an array of objects in javascript? 如何将一组对象缩减为一个具有唯一属性的 object? JavaScript - How to reduce an array of objects into one object with unique properties? JavaScript 定义JavaScript对象文字,以便数组中的所有对象都存在属性? - Define JavaScript object literal so that the properties exists for all objects in an array? 根据对象的属性以自定义方式排序 JavaScript 对象数组 - Sort JavaScript array of Objects based on the object's properties in custom way 从本地存储javascript中的对象数组中删除对象 - delete an object from an array of objects in local storage javascript 删除以前的 object 字段并在 javascript 中的对象数组中创建新字段 - delete previous object fields and make new fields in array of objects in javascript JavaScript-具有对象属性的复合对象 - JavaScript - Composite objects with object properties
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM