use*_*271 5 javascript arrays object filter javascript-objects
我有一个对象数组,如下所示:
var obj = [
{a: 1, b: 5, c: 9},
{a: 2, b: 6, c: 10},
{a: 3, b: 7, c: 11},
{a: 4, b: 8, c: 12}
];
Run Code Online (Sandbox Code Playgroud)
我知道如何使用Array.map()这样的单个对象。
var result = obj.map(x=>x.a)
Run Code Online (Sandbox Code Playgroud)
这将给我以下结果
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
但我想要如下结果:
[
{a: 1, b: 5},
{a: 2, b: 6},
{a: 3, b: 7},
{a: 4, b: 8}
]
Run Code Online (Sandbox Code Playgroud)
从对象数组简而言之,我只想选择几个字段(一个以上)
怎么做 ?
Moh*_*man 14
你可以用.map()与对象解构:
let data = [
{a:1,b:5,c:9}, {a:2,b:6,c:10},
{a:3,b:7,c:11}, {a:4,b:8,c:12}
];
let result = data.map(({ a, b }) => ({a, b}));
console.log(result);Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }Run Code Online (Sandbox Code Playgroud)
使用map():
var data = [
{a:1,b:5,c:9},
{a:2,b:6,c:10},
{a:3,b:7,c:11},
{a:4,b:8,c:12}
];
let modified = data.map(obj => ({a: obj.a, b: obj.b}))
console.log(modified);Run Code Online (Sandbox Code Playgroud)
或者,如果您更喜欢解构:
var data = [
{a:1,b:5,c:9},
{a:2,b:6,c:10},
{a:3,b:7,c:11},
{a:4,b:8,c:12}
];
let modified = data.map(({ a, b }) => ({a, b}));
console.log(modified);Run Code Online (Sandbox Code Playgroud)
如您的示例所示,如果要排除一个或几个特定属性,则可以使用解构并使用rest属性来创建仅包含所需属性的对象:
var obj = [
{a:1,b:5,c:9},
{a:2,b:6,c:10},
{a:3,b:7,c:11},
{a:4,b:8,c:12}
];
const mapped = obj.map(({ c, ...rest }) => rest);
console.log(mapped);Run Code Online (Sandbox Code Playgroud)
如果要包括属性,只需从.map回调中提取它们:
var obj = [
{a:1,b:5,c:9},
{a:2,b:6,c:10},
{a:3,b:7,c:11},
{a:4,b:8,c:12}
];
const mapped = obj.map(({ a, b }) => ({ a, b }));
console.log(mapped);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5140 次 |
| 最近记录: |