问题描述
const obj = {
line1: [2,13,7,6,14],line2: [25,16,24,27,28],line3: [41,31,32,44,42],};
我们如何搜索特定号码并将其替换为另一个号码?
假设我们想找到数字 44 并将其替换为 88?以现代 JS 方式...
解决方法
您可以使用循环对对象的每个键值对进行迭代,然后您可以在数组中找到并替换您想要的数字。请记住,如果数字可以在同一个数组中多次出现,您也必须在数组上循环,否则您可以使用 indexOf 并分配新值。
这是一个例子:
const obj = {
line1: [2,13,7,6,14],line2: [25,16,24,27,28],line3: [41,31,32,44,42],};
const changeNumber = (oldNum,newNum,obj) => {
for (const [key,arr] of Object.entries(obj)) {
const index = arr.indexOf(oldNum);
if (index > -1) {
arr[index] = newNum;
}
}
}
console.log(obj); // Before
changeNumber(44,88,obj);
console.log(obj); // After
/* With duplicates entries */
const changeNumberDuplicate = (oldNum,arr] of Object.entries(obj)) {
let index = 0;
do {
index = arr.indexOf(oldNum,index);
if (index > -1) {
arr[index] = newNum;
}
} while (index > -1);
}
}
const objDup = {
line1: [2,44],line2: [44,};
console.log(objDup); // Before
changeNumberDuplicate(44,objDup);
console.log(objDup); // After