映射两个数组的值

时间:2018-01-30 22:10:08

标签: javascript arrays mapping

我正在使用文本分析服务(pos),我可以传递一个字符串,告诉我是否字符串包含动词,名词等。

我有代码:

var words = new pos.Lexer().lex(req.body.Text);
var tagger = new pos.Tagger();
var taggedWords =  tagger.tag(words);
然后将

taggedWords传递给车把模板并循环并打印。

如果我console.log(taggedWords)我看到一个多维数组,例如:

[ 
  [ 'Interest-only', 'RB' ],
  [ 'deals', 'NNS' ],
  [ 'allow', 'VB' ],
  [ 'only', 'RB' ],
  [ 'ends', 'NNS' ],
  ...
  ...
]

我想维护一个单独的数组,它将上面数组中的值映射到人类可读的版本:

[
  ['RB', 'adjective'],
  ['NNS', 'noun'],
  ['VB', 'verb'],
  ...
  ...
]

然后能够重写,以便原始数组(taggedWords)看起来像:

[ 
  [ 'Interest-only', 'adjective' ],
  [ 'deals', 'noun' ],
  [ 'allow', 'verb' ]
]

然后将这个新数组传递给我的模板。最有效的方法是什么?

3 个答案:

答案 0 :(得分:1)



foreach ($arr_answers['answer'] as $key => $row) {

    QuestionResults::create([
        'answer'      => $row,
        'question_id' => $arr_answers['question_id'][$key],
        'user_id'     => $arr_answers['user_id'][$key],
    ]);
}




答案 1 :(得分:1)

您可以使用remDr$findElement( using = "css selector", ".x-window input[class=' x-form-field x-form-text ']")$sendKeysToElement(list("ded24", key = "enter")) 创建一个包含原始元素的新数组。此代码将每个标记单词中的第二项更改为该标记的字典中列出的内容。



map()




答案 2 :(得分:0)

暴力方法将涉及遍历数组中的所有元素,并在另一个数组中找到它们的匹配项并将它们推送到第三个数组中。这将要求您在阵列中没有两次相同的标记字;即:'RB'或'NNS'。希望这能解决你现在的问题。与前面的答案相对应的这种方法的好处是,数组中的项的顺序无关紧要,因为您将每个元素与另一个数组中的每个其他元素进行比较。

let array1 = [ 
  [ 'Interest-only', 'RB' ],
  [ 'deals', 'NNS' ],
  [ 'allow', 'VB' ],
  [ 'only', 'RB' ],
  [ 'ends', 'NNS' ]
];

let array2 = [ 
  ['RB', 'adjective'],
  ['NNS', 'noun'],
  ['VB', 'verb'],
];

let array3 = [];

array1.forEach(el => 
{
    array2.forEach(par =>
  {
    if (el[1] === par[0])
    {
        array3.push([el[0], par[1]])
    }
  })
});
console.log(array3);