写一个函数,在一个对象数组中找到对应属性值(id)与传入值相同的对象,并将这个对象的另一个属性值(name)赋值给一个已定义好的变量
时间: 2024-09-13 09:15:08 浏览: 48
当然可以。以下是一个简单的JavaScript函数实现:
```javascript
function findObjectWithIdAndAssignName(array, id, targetVarName) {
// 遍历数组寻找具有相应id的对象
for (let i = 0; i < array.length; i++) {
if (array[i].id === id) {
// 如果找到了,将该对象的name属性值赋值给指定的变量
let valueToAssign = array[i].name;
// 如果targetVarName是一个有效的变量名,并且已经在外部作用域定义,
// 则我们可以使用全局对象window来动态设置变量的值
// 注意: 这里使用了eval,不推荐在生产环境中使用eval,因为它是不安全的。
// 如果可能,最好是找到一个更安全的方法来实现这一需求。
try {
eval(targetVarName + " = valueToAssign;");
} catch (e) {
console.error("Cannot assign to variable: " + targetVarName + ". " + e.message);
}
// 如果只需要赋值操作,那么我们可以直接返回这个值而不是使用eval
// return valueToAssign;
}
}
}
```
使用该函数的例子:
```javascript
let people = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' }
];
let nameToAssign;
// 调用函数,传入数组、要查找的id和目标变量名
findObjectWithIdAndAssignName(people, 2, 'nameToAssign');
// 现在变量nameToAssign将包含值'Bob'
console.log(nameToAssign); // 输出: 'Bob'
```
解释:
函数`findObjectWithIdAndAssignName`接收三个参数:一个对象数组,一个要匹配的id值,以及目标变量名。在数组中搜索具有匹配id的对象,并在找到时将该对象的`name`属性值赋给一个指定的变量。这个过程通过遍历数组并检查每个对象的`id`属性来实现。
注意,这里使用了`eval`函数来动态赋值给一个变量名,这在实际应用中是不安全的,因为`eval`可以执行任意代码。如果你控制了传入的`targetVarName`,或者确保这个变量名来自可信的源,那么在这个特定情况下使用`eval`可能是可接受的。否则,更安全的做法可能是直接返回值,而不是使用`eval`。
阅读全文