使用属性将多个数组转换为对象数组

时间:2018-11-03 17:55:18

标签: javascript node.js

我有一个txt文件,该文件由标签分开,然后将每行映射到一个数组。我想做这些数组

    [
    "saddle (seat)",
    "asiento"
  ],
  [
    "seat clamp",
    "abrazadera de asiento"
  ],

使用Eng和Spa作为属性,如下所示:

{    Eng: saddle (seat),
     Spa: asiento,
     Eng: seat clamp,
     Spa: abrazadera de asiento
}

这是我当前的代码

var fs = require('fs');

var output = fs.readFileSync('component names.txt', 'utf8')
    .replace(/(\r)/gm, "")
    .split('\n')
    .map(line => line.split('\t'))
     /* .reduce(() => {}, )
   components = []
    components[].push({
    Eng: line[0],
    Spa: line[1]
    }) */

console.log('output:', JSON.stringify(output, null, 2));

1 个答案:

答案 0 :(得分:2)

要获取对象数组,只需将map()放在split()上之后\n。在\t中再次分割并返回对象:

let str = "saddle (seat)\tasiento\nseat clamp\tabrazadera de asiento"
let trans = str.split('\n').map(line => {
    let [Eng, Spa] = line.split('\t')
    return {Eng, Spa}
})
console.log(trans)

// Get all Spa values:
console.log(trans.map(item => item.Spa))

// Get all Eng values:
console.log(trans.map(item => item.Eng))

基于评论进行编辑
您可以只打印trans.spa,因为可能有很多值。要获取所有Spa值,您需要使用map来获取所有Spa值,例如:

trans.map(item => item.Spa)

(添加到上面的摘录中)