[英]Transform Array of Strings to Objects
我有一個字符串數組,每個字符串都包含逗號分隔的值。
我想把它轉換成一個對象數組。
例如,我有:
var myarray = [
"a1,b1,c1,d1",
"a2,b2,c2,d2",
"a3,b3,c3,d3"
]
...最終應該是:
[
{
"field1": "a1",
"field2": "b1",
"field3": "c1",
"field3": "d1"
},
{
"field1": "a2",
"field2": "b2",
"field3": "c2",
"field2": "d2"
},
{
"field1": "a3",
"field2": "b3",
"field3": "c3",
"field3": "d3"
},
]
我嘗試了各種方法,例如Object.assign和擴展運算符。 但似乎必須有一種更簡單的方法來使用解構或其他方法來做到這一點。
var myarray = [ "a1,b1,c1,d1", "a2,b2,c2,d2", "a3,b3,c3,d3" ]; const makeProperties = arr => arr.map(item => item.split(',').reduce((result, splitItem, index) => { result['field' + (index + 1)] = splitItem; return result; }, {})); console.log(makeProperties(myarray));
這是一個使用單詞表示數字的演示
var myarray = [ "a1,b1,c1,d1", "a2,b2,c2,d2", "a3,b3,c3,d3" ]; const numbers = ['one', 'two', 'three', 'four']; const makeProperties = arr => arr.map(item => item.split(',').reduce((result, splitItem, index) => { result[numbers[index]] = splitItem; return result; }, {})); console.log(makeProperties(myarray));
您可以通過映射數組然后映射它們的值並用新屬性替換默認屬性來制作雙map 。
var myarray = ["a1,b1,c1,d1", "a2,b2,c2,d2", "a3,b3,c3,d3"]; const fromArrayToObjects = (array) => array.map((value, index) => { const o = Object.assign({}, value.split(",")); Object.keys(o).map((key, i) => { Object.defineProperty( o, "field" + (i + 1), Object.getOwnPropertyDescriptor(o, key) ); delete o[key]; }); return o; }); console.log(fromArrayToObjects(myarray));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.