[英]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.