根据多维数组的第二个值进行验证

时间:2019-05-20 13:35:29

标签: javascript arrays multidimensional-array

我有一个多维数组,其中包含文件名和文件格式,例如

[["awardees.png", "png"], ["history.png", "png"]] 

我要验证两个文件格式是否相等?

5 个答案:

答案 0 :(得分:1)

您可以使用every()并将每个数组的第二个元素与第一个数组的第二个元素进行比较。

const arr = [["awardees.png", "png"],["history.png", "png"],["karnat.jpg", "jpg"]] ;

console.log(arr.every(([v1,v2]) => arr[0][1] === v2))

对于IE

const arr = [["awardees.png", "png"],["history.png", "png"]] ;

console.log(arr.every(function(x){

  return arr[0][1] === x[1] 

}))

答案 1 :(得分:0)

赞:

const arr = [["awardees.png", "png"], ["history.png", "png"]];
const match = arr[0][1] == arr[1][1];
console.log(match);

如果数组具有多个元素(嵌套数组):

const arr = [["awardees.png", "png"], ["history.png", "png"], ["dog.png", "png"]];
const match = arr.every(([, v]) => v == arr[0][1]);
console.log(match);

答案 2 :(得分:0)

您可以使用第一个元素检查所有格式。

var array = [["awardees.png", "png"], ["history.png", "png"]],
    same = array.every((b, _, [a]) => a[1] === b[1]);

console.log(same);

答案 3 :(得分:0)

如果我正确理解了您的问题,则可以将扩展名与第一个值分开,并与第二个值匹配

let data = [["awardees.png", "png"],["history.png", "png"]] 

data.forEach(value => {
  let fileExt = value[0].split('.')[1]
  console.log(fileExt === value[1])
})

如果您希望所有内部数组必须具有相同的扩展名,则只需将forEach更改为every

答案 4 :(得分:0)

使用正则表达式捕获文件扩展名,然后遍历数组中的每个条目以检查其是否等于文件扩展名。

const arr = [
	["awardees.png", "png"], 
	["history.png", "png"],
	["demo.png1", "png"],
];

// Regex for capturing file extension in 1st capturing group
const pattern = /\.([A-Za-z0-9]+)$/i;

const res = arr.map(x => {

	// Compare the captured group's value with array element
	if (x[0].match(pattern)[1] === x[1]) {
		return true;
	}
  
	return false;
});

console.log(res);