如何判断两个字符串在JavaScript中是否包含同一个词?
How to determine if two strings contain the same word in JavaScript?
所以,我最感兴趣的是看看谁能巧妙地解决这个问题。它可能会归结为 split
和一些比较循环。
问题: 我正在组合多个 exif 数据字段来为图像创建标题。问题是这个exif数据内容范围很广。
尼康示例:
exifData.Make = "NIKON CORPORATION"
exifData.Model = "NIKON D90"
摩托罗拉 phone 示例:
exifData.Make = "Motorola"
exifData.Model = "XT1032"
在摩托罗拉案例中,我会简单地使用 Make
和 Model
的组合。
但是,在 Nikon 的情况下,存在重复,所以我想忽略 Make
,在这种情况下优先考虑 Model
。
将 Make
转换为包含一组单词的正则表达式,如果 Model
包含匹配项,则 test。如果包含,则取Model
,如果不包含,则合并Make
和Model
。
const getTitle = ({ Make, Model }) =>
new RegExp('\b' + Make.replace(/\s+/g, '|') + '\b', 'i')
.test(Model) ? Model : `${Make} ${Model}`;
console.log(getTitle({ Make: "Motorola", Model: "XT1032" }));
console.log(getTitle({ Make: "NIKON CORPORATION", Model: "NIKON D90" }));
您可以使用 includes()
:
拆分 Make
字符串并检查 Model
中的第一个标记
let exifData1 = {Make: "NIKON CORPORATION", Model: "NIKON D90"},
exifData2 = {Make: "Motorola", Model: "XT1032"};
function getName(o) {
return !o.Model.includes(o.Make.split(" ")[0]) ? o.Make + " " + o.Model : o.Model;
}
console.log(getName(exifData1));
console.log(getName(exifData2));
let exifData = {};
exifData.Make = "NIKON CORPORATION"
exifData.Model = "NIKON D90"
let elems = {},
repeats = {};
let make = exifData.Make.toLowerCase().split(" ").forEach(data => {
elems[data] = true;
});
let model = exifData.Model.toLowerCase().split(" ").forEach(data => {
if(elems[data]) repeats[data] = true;
});
所以,我最感兴趣的是看看谁能巧妙地解决这个问题。它可能会归结为 split
和一些比较循环。
问题: 我正在组合多个 exif 数据字段来为图像创建标题。问题是这个exif数据内容范围很广。
尼康示例:
exifData.Make = "NIKON CORPORATION"
exifData.Model = "NIKON D90"
摩托罗拉 phone 示例:
exifData.Make = "Motorola"
exifData.Model = "XT1032"
在摩托罗拉案例中,我会简单地使用 Make
和 Model
的组合。
但是,在 Nikon 的情况下,存在重复,所以我想忽略 Make
,在这种情况下优先考虑 Model
。
将 Make
转换为包含一组单词的正则表达式,如果 Model
包含匹配项,则 test。如果包含,则取Model
,如果不包含,则合并Make
和Model
。
const getTitle = ({ Make, Model }) =>
new RegExp('\b' + Make.replace(/\s+/g, '|') + '\b', 'i')
.test(Model) ? Model : `${Make} ${Model}`;
console.log(getTitle({ Make: "Motorola", Model: "XT1032" }));
console.log(getTitle({ Make: "NIKON CORPORATION", Model: "NIKON D90" }));
您可以使用 includes()
:
Make
字符串并检查 Model
中的第一个标记
let exifData1 = {Make: "NIKON CORPORATION", Model: "NIKON D90"},
exifData2 = {Make: "Motorola", Model: "XT1032"};
function getName(o) {
return !o.Model.includes(o.Make.split(" ")[0]) ? o.Make + " " + o.Model : o.Model;
}
console.log(getName(exifData1));
console.log(getName(exifData2));
let exifData = {};
exifData.Make = "NIKON CORPORATION"
exifData.Model = "NIKON D90"
let elems = {},
repeats = {};
let make = exifData.Make.toLowerCase().split(" ").forEach(data => {
elems[data] = true;
});
let model = exifData.Model.toLowerCase().split(" ").forEach(data => {
if(elems[data]) repeats[data] = true;
});