我有一个JSON数组:
var arr = [
{ID: "1", Title: "T1", Name: "N1"},
{ID: "2", Title: "T2", Name: "N2"},
{ID: "3", Title: "T3", Name: "N3"}
]
如何在没有循环循环的情况下从所有行中删除标题键?
结果应如下所示:
var arr = [
{ID: "1", Name: "N1"},
{ID: "2", Name: "N2"},
{ID: "3", Name: "N3"}
]
我尝试了以下操作:
delete arr.Title
但它会导致逻辑响应“ true”而不是数组。
答案 0 :(得分:2)
一个替代方法是函数map
,以创建具有所需输出的新数组。在处理程序内部,使用每个索引中的对象创建一个新的Object,最后删除不需要的属性名称Title
。
假设您要使用数组,则此方法不会使原始对象变异。
let arr = [{ID: "1", Title: "T1", Name: "N1"}, {ID: "2", Title: "T2", Name: "N2"}, {ID: "3", Title: "T3", Name: "N3"}],
result = arr.map(o => {
let obj = Object.assign({}, o);
delete obj.Title;
return obj;
});
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 1 :(得分:0)
您的变量arr
不是数组。它是一个对象。
对象用花括号{}包围,例如:{ "name":"Bob", "alive":true, "dead":false }
数组被刹车[]包围,例如:["Bob","Jane","Mary]
答案 2 :(得分:0)
对于实际的JSON字符串,JSON.parse
reviver parameter可用于过滤或修改值:
var json = '[{"ID":"1","Title":"T1","Name":"N1"},{"ID":"2","Title":"T2","Name":"N2"},{"ID":"3","Title":"T3","Name":"N3"}]'
var arr = JSON.parse(json, (k, v) => k != 'Title' ? v : k[-1]);
console.log( arr );
答案 3 :(得分:0)
您可以使用功能实用程序来完成该解决方案,这些实用程序可以使您轻松解决问题。
import { map, omit } from 'lodash/fp';
const newArr = map(omit('Title'), arr);