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;}