let obj = [{ first: 'Jane', last: 'Doe' , x : 1 },
{ first: 'Jane1', last: 'Doe1', x : 2 },
{ first: 'Jane2', last: 'Doe2', x : 3 },
{ first: 'Jane3', last: 'Doe4' , x : 4}];
// gives false for unsatisfied condition, which is fine I believe
let res = obj.map( o => { return o.x > 2 && { "first": o.first, "x": o.x } } )
// below returns all fields where as I want only two fields
let res1 = obj.filter( o => { return o.x > 2 && { "first": o.first, "x": o.x } } )
console.log(res)
console.log(res1)
如何获取有条件的第一个和x个字段
预期产量
[
{
"first": "Jane2",
"x": 3
},
{
"first": "Jane3",
"x": 4
}
]
谢谢
答案 0 :(得分:3)
您可以使用.reduce
来形成x大于2的对象数组。在这里,我使用destructuring assignment从给定对象中获取first
和x
属性,然后使用三元运算符检查是否将对象添加到数组中:>
const arr = [{first:'Jane',last:'Doe',x:1},{first:'Jane1',last:'Doe1',x:2},{first:'Jane2',last:'Doe2',x:3},{first:'Jane3',last:'Doe4',x:4}],
res = arr.reduce((acc, {first, x}) => x > 2 ? [...acc, {first, x}]:acc, []);
console.log(res);
答案 1 :(得分:1)
只需连接这两个功能
Vec<&& String>
答案 2 :(得分:0)
您可以使用过滤器根据您的条件获取新的阵列。这很有用,因为它不会修改您现有的阵列。 然后,您可以使用地图修改结构,如图所示。
const arr = [{
first: 'Jane',
last: 'Doe',
x: 1
},
{
first: 'Jane1',
last: 'Doe1',
x: 2
},
{
first: 'Jane2',
last: 'Doe2',
x: 3
},
{
first: 'Jane3',
last: 'Doe4',
x: 4
}
],
res = arr.filter(item => item.x > 2).map(({first,x}) => ({first,x}));
console.log(res);