Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.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,输入阵列: [“临时/1/休息室/空”, “临时/1/休息室/66,66,66,66,66,66,66,66,64,64,64,64…,64,64,64,64,64”,“临时/2/休息室/空”, “临时工/3/休息室/空的”] 我有一个如上所示的元素数组。 每个项目有四个部分,用(“/”)分隔。 如果任何两个项目的前三部分相同,第四部分不同。我想删除第四部分为“空”的项目 例如: 如果元素的第四部分在一个项中有“空”,而在另一个元素中有一些数据,如66,64,…,64,64,64。 我想删除数组

输入阵列:

[“临时/1/休息室/空”, “临时/1/休息室/66,66,66,66,66,66,66,66,64,64,64,64…,64,64,64,64,64”,“临时/2/休息室/空”, “临时工/3/休息室/空的”]

我有一个如上所示的元素数组。 每个项目有四个部分,用(“/”)分隔。 如果任何两个项目的前三部分相同,第四部分不同。我想删除第四部分为“空”的项目

例如: 如果元素的第四部分在一个项中有“空”,而在另一个元素中有一些数据,如66,64,…,64,64,64。 我想删除数组中第四部分为空的项

我希望输出如下:

[“临时/1/休息室/66,66,66,66,66,66,64,64,64,64…,64,64,64,64,64,64,64”, “临时工/2/休息室/空”, “临时工/3/休息室/空的”]

我尝试拆分数组项:

for(i=0;i<arr.length;i++){
   stringType = message.split('/')[0];
   day = message.split('/')[1] ; //day
   room = message.split('/')[2] ; 
   settingData = message.split('/')[3] ;
}

for(i=0;i您可以使用此代码。它可以完美地满足您的需要

var resultData=[“temp/1/休息室/空”、“temp/1/休息室/66,66,66,66,66,66,66,64,64,64…”、64,64,64,64”、“temp/2/休息室/空”、“temp/3/休息室/空”];
var数据=结果数据;

对于(var i=0;i,您可以按如下方式执行:

  • 首先,为哈希映射中的每个数组值存储它所具有的“第四个值”
  • 接下来,过滤数组并显式删除第四个值为空且存在其他第四个值的数组值(我们可以在创建的哈希映射中检查这一点)
函数拆分值(值,ignoreCase){
设split=value.split('/'),
key=split.slice(0,3).join('/'),
val=split.slice(3.join('/');
如果(忽略案例){
key=key.toLowerCase();
}
返回[key,val];
}
功能过滤器(arr,ignoreCase=false){
var byKey={};
for(arr的let值){
let[key,val]=splitValue(value,ignoreCase);
如果(!byKey.hasOwnProperty(key)){
byKey[key]=[];
}
如果(val!=“空”){
按键[键]。按键(val);
}
}
返回arr.filter((值)=>{
let[key,val]=splitValue(value,ignoreCase);
返回(val!='empty'| | byKey[key]。长度===0);
});
}
console.log(过滤器([
“临时工/1/休息室/空”,
“临时工/1/休息室/什么的”,
“临时工/2/休息室/空”,
“临时工/3/休息室/空的”]);
console.log(过滤器([
“临时工/1/休息室/什么的”,
“临时工/3/厨房/什么的”,
“临时工/1/休息室/空”,
“临时工/3/厨房/空”]);
console.log(过滤器([
“临时工/1/休息室/什么的”,
“临时工/3/厨房/什么的”,
“临时工/1/休息室/空”,
“temp/3/厨房/空的”],true));
。作为控制台包装器{
最大高度:100%!重要;

}
放一个工作片段,你的问题太宽泛了检查答案。我相信这对你会很有用。嘿,非常感谢。这对我很有帮助。但是如果我有var arr=[“temp/1/Lounge/something”,“temp/3/kitchen/something”,“temp/1/Lounge/empty”,“temp/3/kitchen/empty”]之类的输入。我想要这样的输出:var arr=[“临时工/1/休息室/某物”、“临时工/3/厨房/某物”]我该怎么办?问题是,
Kitchen
Kitchen
不同,因为一个是大写的
K
,另一个是小写的
K
。我更新了我的答案来解决这个问题,并对它们一视同仁。这就是我想要的。非常感谢您快速重播。