【发布时间】:2015-01-12 23:47:55
【问题描述】:
我正在从这样的纯文本文件中获取一个列表:
2: B D E
5: B C
并使用 javascript(没有插件)像这样重新排列列表
B: 2 5
D: 2
E: 5
// rest of code file input , etc. not necessary to list here, imho
var contents = e.target.result; // read contents of file
var oldParts = contents.split(/\n/); // put each line of contents into array
for (i = 0; i < oldParts.length; i++) {
var allChar = oldParts[i].split( ' ' ); // each character from the line
var truck = {};
var tractor = "";
var trailer = "";
for (j = 0; j < allChar.length; j++) {
allChar[j] = allChar[j].replace(":", ""); // remove the ":" delimiter
allChar[j].trim();
trailer = allChar[0]; // get just the numbers
if ( isNaN ( allChar[j] ) ) { // is not a number
tractor = allChar[j];
if ( truck.hasOwnProperty(tractor) ) {
console.log ( "already in" );
} else {
console.log ( " needs to be added" ) ;
truck [ tractor ] = trailer;
}
}
}
for ( tractor in truck ) {
document.write ( tractor + " : " + truck[tractor] + "<br />" );
}
}
上面的代码会这样写:
B: 2
D: 2
E: 2
B: 5
C: 5
这很接近,但我正在尝试检查卡车的属性,如果它等于拖拉机,只需附加拖车
我对卡车属性的所有尝试都是未定义的
我试过了
truck [ tractor ] = trailer;
if (tractor in truck) { // never is
我怎样才能得到卡车 [ tractor ] 的价值,看看我接下来需要做什么?
【问题讨论】:
-
你说你尝试过的事情,实际上是你需要做的。您为什么不在您尝试过的地方发布代码 - 一个允许我们重现您的问题的最小示例 - 我们可以帮助您找到问题所在?
-
好的,谢谢@ruakh。这是代码示例的jsfiddle。问题是,即使我清楚地将带有拖车值的拖拉机属性加载到卡车对象中,如果(卡车中的拖拉机)找不到它
-
澄清一下:通过“最小示例”,我的意思是您应该将您的代码缩减为与您期望的行为不同的绝对最小程序。您的最小程序不需要从文件中读取,因此重现问题不需要我们创建文本文件。 (你需要在这里付出一些努力。见stackoverflow.com/help/mcve.)
-
在上面的示例中,“E”如何在“2:”行很明显时得到“5”。这里有点糊涂。当我说“如何”时,我的意思是为什么?
标签: javascript arrays hashtable associative-array