2017-07-19 70 views
0

我有以下陣列:使用Javascript - 轉換數組的數組爲對象的數組預填充值

[ 
    [val1, val2] 
    [val1, val2] 
    [val1, val2] 
    [valN, valN] 
] 

N代表一個事實,即這些陣列不限,即我從來不知道究竟有多少做我店。我試圖做到的是,數組轉換爲與鍵latlng對象的數組,我想到這麼有最終結果爲以下這樣我就可以使用它進行進一步的需求:

[ 
    { 
     lat: val1, 
     lng: val2 
    }, 
    { 
     lat: val1, 
     lng: val2 
    }, 
    { 
     lat: valN, 
     lng: valN 
    } 
] 

我發現一個函數來轉換這些內部數組對象和它看起來像這樣:

objectify(array) { 
    return array.reduce(function(result, currentArray) { 
     result[currentArray[0]] = currentArray[1]; 
     return result; 
    }, {}); 
} 

它的工作原理,但輸出看起來是這樣的:

[ 
    {val1: val1, val2: val2} 
    {val1: val1, val2: val2} 
    {valN: valN, valN: valN} 
] 

,這就是不是我要找的東西,因爲我真的需要這些latlng作爲對象的關鍵字。我該如何解決這個問題?

回答

0

您可以簡單地使用Array.prototype.map通過將投影功能,投影陣列到另一個問題:

var arrs = [ 
 
    [1, 2], 
 
    [3, 4], 
 
    [5, 6], 
 
    [7, 8] 
 
]; 
 

 
var objs = arrs.map(function(x) { 
 
    return { 
 
    lat: x[0], 
 
    lng: x[1] 
 
    }; 
 
}); 
 
console.log(objs);

+0

謝謝Yeldar,它對我來說工作得非常好!如果你的帖子是第一個來的話,我會在5分鐘左右回覆它。 –

1

您可以使用Array#map來實現這一目標。 Array#map通過投影函數傳遞每個數組元素,並將值返回給新數組。

var data= [ 
 
    ['val1', 'val2'], 
 
    ['val1', 'val2'], 
 
    ['val1', 'val2'], 
 
    ['valN', 'valN'], 
 
]; 
 

 
var result = data.map(function(row) { 
 
    return { 
 
    lat: row[0], 
 
    lng: row[1] 
 
    }; 
 
}); 
 

 
console.log(result);

0

var array = [ 
 
    ['val1', 'val2'], 
 
    ['val1', 'val2'], 
 
    ['val1', 'val2'], 
 
    ['valN', 'valN'] 
 
]; 
 

 
var arrayObject = array.map(function(item){ 
 
    return { lat: item[0], lng: item[1]}; 
 
}); 
 

 
console.log(arrayObject);

2

使用ES6你可以在一個非常簡潔的方式寫:

var arrs = [ 
 
    [1, 2], 
 
    [3, 4], 
 
    [5, 6], 
 
    [7, 8] 
 
]; 
 
const locations = arrs.map(([lat, lng]) => ({lat, lng})); 
 
console.log(locations);