Javascript 从对象中删除数据

Javascript 从对象中删除数据,javascript,arrays,Javascript,Arrays,我有下面的对象,需要从结果中删除列,我将动态获取列名。请您帮助我如何根据列名{“columnname”:“couln2”,“datatype”:null} 数组是: { "tabl1": {"tablename":"tabl1","tablecolumns":"yes","patternCheckStatus":true, "columns": [{"columnname":"column1","datatype":"Numeric","patternregex":"jjj"},{"column

我有下面的对象,需要从结果中删除列,我将动态获取列名。请您帮助我如何根据列名
{“columnname”:“couln2”,“datatype”:null}
数组是:

{
"tabl1":
{"tablename":"tabl1","tablecolumns":"yes","patternCheckStatus":true,
"columns": [{"columnname":"column1","datatype":"Numeric","patternregex":"jjj"},{"columnname":"column2","datatype":"UpperCase","patternregex":"hkl;;"}]},
"table2":{"tablename":"table2","tablecolumns":"yes","patternCheckStatus":null,
"columns":[{"columnname":"t2column","datatype":"Alphabetic"}]
}}
让arr=
{“tabl1”:{“tablename”:“tabl1”,“TABLECLUMNS”:“是”,“patternCheckStatus”:true,“列”:[{“columnname”:“column1”,“datatype”:“JJJJ”},{“columnname”:“column2”,“datatype”:“大写”,“patternregex”:“hkl;”“}],”table2:{“tablename”:“table2”,“tablecolumns”:“是”,“patternCheckStatus”:null,“列”:[{“columnname”:“T2Columns”,“数据类型”:“字母”}]}
const result=arr.reduce((a,{tablename,tablecolumns,columnname,datatype})=>{
a[tablename]=a[tablename]|{tablename,tablecolumns,columns:[]};
如果(列名称)
[tablename].columns.push({columnname,datatype});
返回a;
},{})

console.log(Object.values(result));
我无法正确理解您的问题,但我认为您希望从
arr
中删除具有特定
columnname
值的特定对象。 您可以按如下方式过滤arr:

function deleteColumn (column) {
  let newArr = arr.filter(item => {
     return item.columnname !== column
  })
  return newArr
}
然后您可以运行:

deleteColumn('tabl2_colu') // Will return an array without object having any columnname = 'tabl2_colu'

如果要删除数组中的某些列,则可以使用
Object.entries
,同时
map
将数组映射到另一个数组中:

let propertyName = 'tablename';
arr.map(s=> Object.fromEntries(Object.entries(s).filter(([k, v]) => k!= propertyName)))
例如:

让arr=[
{“tablename”:“table1”,“tablecolumns”:“yes”},
{“tablename”:“table1”,“columnname”:“col1”,“数据类型”:“字母”},
{“tablename”:“table2”,“tablecolumns”:“yes”},
{“tablename”:“table2”,“columnname”:“tabl2_colu”,“datatype”:null},
{“tablename”:“table2”,“columnname”:“tab2_col2”,“datatype”:“Numeric”}
];
const result=arr.reduce((a,{tablename,tablecolumns,columnname,datatype})=>{
a[tablename]=a[tablename]|{tablename,tablecolumns,columns:[]};
如果(列名称)
[tablename].columns.push({columnname,datatype});
返回a;
},{})
让propertyName='tablename';
console.log(Object.values)(结果)
.map=>Object.fromEntries(Object.entries)

.filter(([k,v])=>k!=propertyName));
一种方法是在对象数组中循环,通过其属性标识符找到要删除的对象,然后将该对象从数组中删除:

arr = [
{"tablename":"table1","tablecolumns":"yes"},
{"tablename":"table1","columnname":"col1","datatype":"Alphabetic"},
{"tablename":"table2","tablecolumns":"yes"},
{"tablename":"table2","columnname":"tabl2_colu","datatype":null},
{"tablename":"table2","columnname":"tab2_col2","datatype":"Numeric"}
];

function remove_object_by_colname( colname )
  arr.forEach(function( arrayItem, index ) {
    if ( arrayItem.columnname == colname ) {
      arr.splice( index, 1 );
    }
  };
} );

remove_object_by_colname( 'tabl2_colu' ); // Will remove the 4th object from arr.

共享您需要的结果数组。您的意思是删除属性
并删除
tabl2_colu
?哪里是
tabl2_colu
?@Ahsan,@nopole,请查看更新的数组详细信息感谢您的回答。请查看更新的数组谢谢您的回答,但我在下面看到错误,属性“Fromentries”doe类型“ObjectConstructor”上不存在。ts@user2319726看起来您需要将
“lib”:[“es2017”]
添加到设置中。:)我需要删除完整的columnname对象,我想现在它只删除列名键值{“tabl1”:{“tablename”:“tabl1”,“tablecolumns”:“yes”,“patternCheckStatus”:true,“columns”:[{“columnname”:”column1”,“datatype”:“Numeric”,“patternregex”:“jjj”},}}@user您能写出所需的输出吗?请在删除之前查看以下内容:{“tabl1”:{“tablename”:“tabl1”,“tablecolumns”:“yes”,“patternCheckStatus”:true,“columns”:[{“columnname”:“column1”,“datatype”:“Numeric”,“patternregex”:“jj”},{“columnname”:“column2”,“datatype”:“大写”,”patternregex:“hkl;”“}]},}删除{“tabl1”:{“tablename”:“tabl1”,“tablecolumns”:“是”,“patternCheckStatus”:true,“columns”:[{“columnname”:“column1”,“datatype”:“Numeric”,“patternregex”:“jjj”},}后应为“}”