繁体   English   中英

从2D数组javascript中提取最后一个元素

[英]extracting last elements from 2d array javascript

好的,所以我试图作为学习项目使用JavaScript创建一个非常基本的机器翻译程序。 我正在将句子分解为2D数组...

function string2TwoD(sentence){
    var periodless = sentence.replace(/^[.\s]+|[.\s]+$/g, "");
    var splitSen = periodless.split(" ");
    splitArray = [];
    var i;
    for (i = 0; i < splitSen.length; i++){
        splitArray[i] = splitSen[i].split("");
    }
    return splitArray;
}

现在,我试图从每个第二级数组中提取最后一个字母,并将其粘贴到以后可以使用的另一个数组中。 到目前为止,我唯一想到的是...

var workWith = sting2TwoD("This here is a sentence boy.");
var completeSen = string2TwoD("This here is a sentence boy.");
var i;
var popped = [];
    for (i = 0; i < workwith.length; i++){
        popped += workwith[i].pop();
    }
var poppedArray = popped.split("");
console.log(poppedArray);
console.log(completeSen);

这对我来说似乎是一个糟糕的解决方案,因为我被迫创建原始数组的第二个副本,以保留住string2TwoD函数的原始值。 必须有一种更好的方法来访问第二级数组的结尾值(在许多情况下,我实际上需要提取形容词结尾时,我将需要数组的最后两个元素(这将从德语翻译成英语)) 。 我已经尝试过使用多个for循环来执行此操作,但是似乎无法获取正确的值。 有什么建议么? 原谅我,我是菜鸟。

确实,

您可以使用以下方法访问任何JS数组的最后一个值:

arrayName[arrayName.length-1]

您可以将问题设为1D:

myString.slice(0,-1)将删除字符串的最后一个字符,因此您无需将字符串转换为数组。 在此处查看其文档(正索引:我们从头算起;负索引:我们从头算起)

然后,为了优雅起见,您应该将上面的函数映射到一维数组(这意味着您将函数自动应用到表的每个元素,并将其值替换为返回的值):

/* STEP 1: standardization, on some web browsers the array.prototype.map function may not exist */
if (!Array.prototype.map)
{
  Array.prototype.map = function(fun /*, thisp*/)
  {
    var len = this.length;
    if (typeof fun != "function")
      throw new TypeError();

    var res = new Array(len);
    var thisp = arguments[1];
    for (var i = 0; i < len; i++)
    {
      if (i in this)
        res[i] = fun.call(thisp, this[i], i, this);
    }

    return res;
  };
}

/* STEP 2 */
splitSen.map(
  function(element)
  {
    element.slice(0,-1);
  }
);

接收workWith数组,并将最后一个元素推入新数组。

var arr = [];
for (var i = 0, l = workWith.length; i < l; i++) {
  arr.push(workWith[i][workWith[i].length - 1]);
}
console.log(arr);

您不需要workWith即可实现此目标:

var item;
var lastChars = [];
var completeSen = string2TwoD("This here is a sentence boy.");
for (var i = 0, l = completeSen.length; i < l; i++) {
    item = completeSen[i];
    lastChars.push(item[item.length - 1]);
}
console.log(lastChars);
console.log(completeSen);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM