[英]Javascript convert array of objects to an array with only specific keys with ES6
我有以下數組
const array = [{name:'one', value:1},{name:'two'},{name:'three', value:3}]
我想要的就是得到
const finalarr = [1,3]
這是獲取具有鍵值的值數組
所以我試過了
const finalarr = arr.map(obj=>obj.value)
以上返回[1, undefined, 3];
我也試過了
const finalarr = arr.map(obj => {
if (obj.value) {
return obj.value;
}
})
但我仍然得到[1, undefined,3]
我如何調整此選項只返回具有鍵值的對象的值以消除未定義的鍵?
你可以使用reduce
const array = [{name:'one;', value:1},{name:'two'},{name:'three', value:3}] let final = array.reduce((op,{value})=>{ if(typeof value !== 'undefined'){ op.push(value) } return op },[]) console.log(final)
用於映射完整數組的映射,其中更改的值不會跳過值,您可以使用map和filter來實現目的
const arr = [{name:'one', value:1},{name:'two'},{name:'three', value:3}] const finalarr = arr.filter(({value})=>typeof value !== 'undefined').map(({value})=> value) console.log(finalarr)
Array .map
方法將返回另一個與原始數組大小完全相同的數組。
如果您想要一個不同大小的結果,則不能僅使用純.map
。
你可以做的是首先.filter
out對象沒有.value
屬性:
const array = [{name:'one', value:1},{name:'two'},{name:'three', value:3}] const result = array .filter(obj => typeof obj.value !== 'undefined') .map(obj => obj.value); console.log(result);
否則,您也可以使用.reduce
:
const array = [{name:'one', value:1},{name:'two'},{name:'three', value:3}] const result = array.reduce((arr, obj) => { if (typeof obj.value !== 'undefined') arr.push(obj.value); return arr; }, []); console.log(result);
使用函數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}]; const finalarr = arr.reduce((a, {value}) => { if (value) a.push(value); return a; }, []); console.log(finalarr);
.as-console-wrapper { max-height: 100% !important; top: 0; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.