我有两个包含一些参数值的数组。数组中的所有元素都是字符串,如下所示:
x = [ "vorzugsreihe=J", "nennleistung=94,1127", "nenndrehzahl=31,9400"]
y = ["nenndrehzahl=500,3000"]
预期输出为:
x = [ "vorzugsreihe=J", "nennleistung=94,1127", "nenndrehzahl=500,3000"]
我尝试使用Array.Filter
,但似乎无法仅进行部分过滤(例如以字符串开头而不是整个字符串开头,因为值不一样,因此无法匹配)。
我想要的是能够遍历数组Y
中的每个元素,并搜索数组X
中是否存在element(“ =”之前的字符串)并替换value( s)在数组X
中的元素。
答案 0 :(得分:1)
WebElement text = driver.findElement(By.xpath("//input[@id='text']"));
System.out.println("text= " +text.getAttribute("placeholder"));
尝试一下。这样就可以使用RegEx,并且不容易出错。
答案 1 :(得分:0)
您可以使用Map
和map
y
创建一个Map,用=
分割每个元素,将第一部分用作键,第二部分用作值x
数组,将每个元素除以=
,并使用第一部分作为关键字在Map
中进行搜索(如果当前存在来自Map
的使用值,则返回无任何值)更改
let x = ["vorzugsreihe=J", "nennleistung=94,1127", "nenndrehzahl=31,9400"]
let y = ["nenndrehzahl=500,3000"]
let maper = new Map(y.map(v => {
let [key, value] = v.split('=', 2)
return [key, value]
}))
let final = x.map(v => {
let [key, value] = v.split('=', 2)
if (maper.has(key)) {
return key + '=' + maper.get(key)
}
return v
})
console.log(final)
答案 2 :(得分:0)
尝试一下:
y.forEach(item => {
const str = item.split("=")[0];
const index = x.findIndex(el => el.startsWith(str));
if (index) {
const split = x[index].split('=');
x[index] = `${split[0]}=${split[1]}`;
}
})
答案 3 :(得分:0)
对于y
数组中的每个值,迭代并检查x
数组中是否存在该单词。找到匹配项后,只需更新值即可。 (以下解决方案会更改原始数组)
const x = [ "vorzugsreihe=J", "nennleistung=94,1127", "nenndrehzahl=31,9400"],
y = ["nenndrehzahl=500,3000"],
result = y.forEach(word => {
let [str, number] = word.split('=');
x.forEach((wrd,i) => {
if(wrd.split('=')[0].includes(str)) {
x[i] = word;
}
});
});
console.log(x);
答案 4 :(得分:0)
我建议结合使用reduce + find-这会累积并为您提供预期的结果。
var x = [ "vorzugsreihe=J", "nennleistung=94,1127", "nenndrehzahl=31,9400"]
var y = ["nenndrehzahl=500,3000"]
var combinedArr = x.reduce((acc, elem, index) => {
const elemFoundInY = y.find((yElem) => yElem.split("=")[0] === elem.split("=")[0]);
if (elemFoundInY) {
acc = [...acc, ...[elemFoundInY]]
} else {
acc = [...acc, ...[elem]];
}
return acc;
}, [])
console.log(combinedArr);
答案 5 :(得分:0)
您可以使用.startsWith()
来检查元素是否以key=
开头,然后替换其值:
let x = [ "vorzugsreihe=J", "nennleistung=94,1127", "nenndrehzahl=31,9400"];
let y = ["nenndrehzahl=500,3000"];
y.forEach(val => {
let [key, value] = val.split("=");
for (let i = 0; i < x.length; i++) {
if (x[i].startsWith(`${key}=`)) x[i] = `${x[i].split("=")[0]}=${value}`;
}
})
console.log(x)