Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript数组匹配以显示唯一结果_Javascript_Arrays - Fatal编程技术网

javascript数组匹配以显示唯一结果

javascript数组匹配以显示唯一结果,javascript,arrays,Javascript,Arrays,我不熟悉javascript数组匹配 我有两个数组。每个数组具有相同数量的元素:11 txtfilename=['txt1','txt6','txt6','txt6','txt7','txt7','txt8','txt9','txt9','txt9','txt9'] content=['apple from one','six trees','cats','happy dogs','healthy fruit','good job','ask question','check safety','

我不熟悉javascript数组匹配

我有两个数组。每个数组具有相同数量的元素:11

txtfilename=['txt1','txt6','txt6','txt6','txt7','txt7','txt8','txt9','txt9','txt9','txt9']
content=['apple from one','six trees','cats','happy dogs','healthy fruit','good job','ask question','check safety','stay in the house','good results','happy holiday']
事实上,元素在txtfilename中的相同位置与元素在内容中的相同位置相匹配

例如:txtfilename中的第二个元素与内容中的第二个元素匹配

但是,txtfilename有重复的元素,内容的元素是唯一的

我有匹配这两个数组的问题。 我想显示这两个数组,如下所示:

txtfilename: txt1
content: apple from one

txtfilename:txt6
content:'six trees','cats','happy dogs'

txtfilename:txt7
content:'healthy fruit','good job'

txtfilename:txt8
content:'ask question'

txtfilename:txt9
content:'check safety','stay in the house','good results','happy holiday'
//初始化数组
字符串[]txtfilename=新字符串[]{“txt1”、“txt6”、“txt6”、“txt6”、“txt7”、“txt7”、“txt8”,
“txt9”、“txt9”、“txt9”、“txt9”};
字符串[]内容=新字符串[]{“一个苹果”、“六棵树”、“猫”、“快乐的狗”,
“健康水果”、“干得好”、“提问”、“检查安全”、“呆在家里”,
“好成绩”、“节日快乐”};
//创建地图
Map fileNameWithContents=newhashmap();
//遍历数组
对于(int i=0;i

这将完成javaScript中的工作,您可以实现MapReduce算法:

var result = txtfilename.map((item, index) => ({"txtfilename": item, "content": content[index]}));
var shift = 0;
txtfilename.forEach((item, index, arr) => {
   if (index < arr.length - 1 && item === arr[index+1])
   {
       result[index + shift].content += ", " + content[index+1];
       result.splice(index + 1 + shift, 1);
       shift --;
   }
});
console.log(result);
// [ { txtfilename: 'txt1', content: 'apple from one' },
//  { txtfilename: 'txt6', content: 'six trees, cats, happy dogs' },
//  { txtfilename: 'txt7', content: 'healthy fruit, good job' },
//  { txtfilename: 'txt8', content: 'ask question' },
//  { txtfilename: 'txt9', content: 'check safety, stay in the house, good  results, happy holiday' } ]
var result=txtfilename.map((项,索引)=>({“txtfilename”:项,“内容”:内容[index]});
var移位=0;
txtfilename.forEach((项目、索引、arr)=>{
如果(索引
编辑:
首先,我映射textfilename和内容以获得一个对象数组。每个对象都有一个属性txtfilename和内容。

然后,因为数组是按txtfilename排序的,所以我将每个对象与其相邻对象进行比较。如果两个对象具有相同的键(textfilename属性),我将在第一个对象中包含两个字符串(content proprety),并删除第二个变得多余的对象

(psst…java不是javascript)您实际使用的是java还是javascript?你已经标记了bothI,我正在使用这两个。更多关注Javascript这个问题是关于
Javascript
的,因此你不应该添加
Java
tagOP让这成为了一个Java问题。。。所有人都弹射!我使用hashMap来存储文件名asd内容(键是filename,内容是value)。HashMap中不会有重复的键。。我正在迭代文件名数组并存储与相应文件名的竞争。。棘手的是文件名可以重复。。在将数据添加到地图之前,我正在检查地图是否包含所选关键点的数据。。如果存在某个值,则将新值附加到映射中的值。希望有帮助..谢谢@Jobin,现在如果您编辑您的答案并在那里添加您的解释,而不仅仅是作为评论,那将是完美的选择。:-)谢谢!!!。我明白了。但是,我得到的结果是:txtfilename:txt6 txtfilename:六棵树txtfilename:txt7 txtfilename:Health from First txtfilename:txt1 txtfilename:apple from one txtfilename:txt8 txtfilename:ask question txtfilename:txt9 txtfilename:checksafety@Jobin您需要添加“fileNameWithContents.replace(txtfilename[i],val.toString());”在val.append(contents[i])之后获取OP想要的内容。是。fileNameWithContents.put(txtfilename[i],val.toString());需要在val.append(content[i])之后添加;。。在添加评论后,它被遗漏了。。谢谢你找到它。你能解释一下吗?我只是编辑了一下来解释一下。如果不够清楚,请随时询问。你会得到答复的
var result = txtfilename.map((item, index) => ({"txtfilename": item, "content": content[index]}));
var shift = 0;
txtfilename.forEach((item, index, arr) => {
   if (index < arr.length - 1 && item === arr[index+1])
   {
       result[index + shift].content += ", " + content[index+1];
       result.splice(index + 1 + shift, 1);
       shift --;
   }
});
console.log(result);
// [ { txtfilename: 'txt1', content: 'apple from one' },
//  { txtfilename: 'txt6', content: 'six trees, cats, happy dogs' },
//  { txtfilename: 'txt7', content: 'healthy fruit, good job' },
//  { txtfilename: 'txt8', content: 'ask question' },
//  { txtfilename: 'txt9', content: 'check safety, stay in the house, good  results, happy holiday' } ]