我有2个JavaScript数组,如下所示;
arr1 = [CRS02,CRS04,CRS03,CRS01,CRS05];
arr2 = [CRS02,CRS03,CRS05];
arr2
包含的元素少于或等于arr1
。
我想创建一个如下所示的字符串。
CRS02,--,CRS03,--,CRS05
如果arr2
中的元素位于arr1
,则应显示其他元素应显示“ - ”。
我试过如下,
for (a = 0; a < arr1.length; a++) {
for (c = 0; c < arr2.length; c++) {
if (arr1[a] == arr2[c]) {
content += arr2[c] + ",";
continue;
} else {
content += "--,";
}
}
continue;
}
alert(content);
但工作不正常。请帮忙。
答案 0 :(得分:2)
假设
arr2
不包含任何不属于arr1
的元素使用map
进行迭代并检查每个index
的{{1}}是否不是item
-1
<强>演示强>
var output = arr1.map( s => arr2.indexOf( s ) != -1 ? s : "--" );
&#13;
答案 1 :(得分:0)
首先,看起来你已经用变量填充了数组。
JavaScript中的字符串以单引号(''
)或双引号(""
)开头和结尾。
我会假设它们在简单性方面是字符串。
你不需要两个循环。只需使用step
计数器:
注意:此解决方案的目的是可读,以便您了解概念。当然,可以使用其他答案中建议的indexOf
或reduce
来实施。
var arr1 = ["CRS02","CRS04","CRS03","CRS01","CRS05"];
var arr2 = ["CRS02","CRS03","CRS05"];
var content = "";
// Use length of largest array.
for (var i = 0, step = 0; i < arr1.length; ++i) {
if (arr1[i] == arr2[step]) {
content += arr1[i] + ", ";
++step;
} else {
content += "--, ";
}
}
// Remove last comma and space.
content = content.substring(0, content.length - 2);
console.log(content);
答案 2 :(得分:0)
var arr1 = ["CRS02","CRS04","CRS03","CRS01","CRS05"];
var arr2 = ["CRS02","CRS03","CRS05"];
var str = "";
for(var i = 0; i < arr1.length; i++){
if(arr2.indexOf(arr1[i]) >= 0){
str += arr1[i] + ",";
}
else{
str += "--"+",";
}
}
str = str.substring(0,(str.length-1));
console.log(str);
答案 3 :(得分:0)
尝试以下方法:
var arr1 = ["CRS02","CRS04","CRS03","CRS01","CRS05"];
var arr2 = ["CRS02","CRS03","CRS05"];
function getContainsString(arr1, arr2) {
return arr1.reduce(function(result, el) {
return result + (arr2.indexOf(el) < 0 ? "--" : el) + ",";
}, "").slice(0, -1);
}
console.log(getContainsString(arr1, arr2));
//CRS02,--,CRS03,--,CRS05
答案 4 :(得分:0)
如果您的数据集很大并且您不想在循环中重复使用indexOf
,则可以使用Set
快速检查arr2
的内容:
const arr1 = ["CRS02","CRS04","CRS03","CRS01","CRS05"];
const set2 = new Set(["CRS02","CRS03","CRS05"]);
console.log(
arr1
.map(x => set2.has(x) ? x : "--")
.join(",")
);
答案 5 :(得分:0)
您可以使用array#map
来遍历arr1
并使用array#includes
来测试arr2
中是否存在值。
var arr1 = ["CRS02","CRS04","CRS03","CRS01","CRS05"],
arr2 = ["CRS02","CRS03","CRS05"],
result = arr1.map(v => arr2.includes(v) ? v :'--')
.join(',');
console.log(result);
&#13;