Javascript使用ES6将对象数组转换为仅具有特定键的数组

Javascript使用ES6将对象数组转换为仅具有特定键的数组,javascript,Javascript,我有以下数组 const array = [{name:'one', value:1},{name:'two'},{name:'three', value:3}] 我想要的是得到 const finalarr = [1,3] 即获取具有键值的值数组 所以我试过了 const finalarr = arr.map(obj=>obj.value) 上面返回[1,未定义,3] 我也试过了 const finalarr = arr.map(obj => { if (obj

我有以下数组

const array = [{name:'one', value:1},{name:'two'},{name:'three', value:3}]
我想要的是得到

const finalarr = [1,3]
即获取具有键值的值数组

所以我试过了

const finalarr = arr.map(obj=>obj.value)
上面返回
[1,未定义,3]

我也试过了

const finalarr = arr.map(obj => {
       if (obj.value) {
         return obj.value;
       }
    }) 
但是我仍然得到
[1,未定义,3]

如何调整此设置以仅返回具有键值的对象的值以消除未定义的键值?

您可以使用reduce

const数组=[{name:'one;',value:1},{name:'two'},{name:'twree',value:3}]
让final=array.reduce((op,{value})=>{
如果(值的类型!==“未定义”){
op.push(值)
}
返回操作
},[])

console.log(final)
数组
.map
方法将返回与原始数组大小完全相同的另一个数组

如果您想要不同大小的结果,则不能仅使用纯
.map
来完成

您可以做的是首先
。筛选出不带
的对象。
属性:

const数组=[{name:'one',value:1},{name:'two'},{name:'two',value:3}]
常量结果=数组
.filter(obj=>typeof obj.value!==“未定义”)
.map(obj=>obj.value);

控制台日志(结果)
使用函数
reduce
,因为函数
map
返回与源数组长度相同的数组

const finalarr = arr.reduce((a, {value}) => {
    if (value) a.push(value);
    return a;
}, []); 
重要提示:您的方法是跳过值等于零的对象
0

范例

const arr=[{name:'one',value:1},{name:'two'},{name:'three',value:3}];
常量finalarr=arr.reduce((a,{value})=>{
如果(值)为推送(值);
返回a;
}, []);
控制台日志(finalarr)
。作为控制台包装{最大高度:100%!重要;顶部:0;}