有更好的方法吗?我想从对象返回特定属性。这种方式有效,但我认为这不是最好的方法。
target.formats.map(format => {
const {
id,
format_type_id,
payment_type,
initial_date,
final_date,
estimated_audience,
direction_type_id,
price
} = format
return {
id,
format_type_id,
payment_type,
initial_date,
final_date,
estimated_audience,
direction_type_id,
price
}
})
答案 0 :(得分:1)
嗯,你可以用非常简单的方式做到这一点没有解构分配
target.formats.map(f => ({
f.id,
f.format_type_id,
f.payment_type,
f.initial_date,
f.final_date,
f.estimated_audience,
f.direction_type_id,
f.price
})
或者您可以编写一个选择某些属性的通用函数
const props = xs => y => {
let acc = {}
for (let x of xs) acc[x] = y[x]
return acc;
}
target.formats.map(props([
'id',
'format_type_id',
'payment_type',
'initial_date',
'final_date',
'estimated_audience',
'direction_type_id',
'price'
]))
答案 1 :(得分:0)
您可以使用参数列表中的解构和一些额外的括号。
target.formats.map(({ id, format_type_id /* ... */ }) => ({ id, format_type_id /* ... */ }));
答案 2 :(得分:0)
所以你想只返回一个对象的特定属性?试试这个:
var bigObj = {a: 1, b: 2, c: 3, d: 4}
function keepProperties(props, obj) {
var result = {}
for (var i = 0; i < props.length; i++) {
var prop = props[i]
result[prop] = obj[prop]
}
return result;
}
console.log(keepProperties(["a", "c"], bigObj))
&#13;
所以你可以运行类似
的东西target.formats.map(f => keepProperties(["id", "format_type_id"], f))
答案 3 :(得分:-1)
为什么不在对象上创建一个方法以格式返回它?
//Define object rules
var myClass = (function() {
function myClass() {
this.a = 1;
this.date = new Date();
}
myClass.prototype.format = function() {
return {
a: this.a,
d: this.date
};
};
return myClass;
}());
//Create an object
var obj = new myClass();
//Log in format
console.log(obj.format());