如何在JavaScript中将两个长度不同的数组对应赋值?

js 如何将两个长度不同的数组对应赋值?
例如:

arr1 =  [
    {key:'text',value:''},
    {key:'input',value:''},
    {key:'input',value:''},
    {key:'text',value:''},
]
arr2 = ['a1','b2']

我想把 arr2 中的值赋给 arr1 中 key 为 'input' 的 value,顺序已经对应,如何处理呢?

用了两层循环,每次遍历结果都是最后的值,是不是有更好的方式?
最终希望 arr1 的结果是

arr1 =  [
    {key:'text',value:''},
    {key:'input',value:'a1'},
    {key:'input',value:'b2'},
    {key:'text',value:''},
]
阅读 828
avatarAI BotBETA
你可以使用单个循环来解决这个问题,通过遍历 `arr1` 并在 `key` 为 `'input'` 时按顺序从 `arr2` 中取值进行赋值。以下是一个示例代码:

let arr1 = [

{key:'text',value:''},
{key:'input',value:''},
{key:'input',value:''},
{key:'text',value:''},

];
let arr2 = ['a1','b2'];

let index = 0; // 用于追踪 arr2 的当前值索引

arr1.forEach(item => {

if (item.key === 'input' && index < arr2.length) {
    item.value = arr2[index];
    index++;
}

});

console.log(arr1);


运行这段代码后,`arr1` 将变成:

[

{key:'text',value:''},
{key:'input',value:'a1'},
{key:'input',value:'b2'},
{key:'text',value:''},

]


这种方式避免了使用两层循环,并且只在需要赋值时才访问 `arr2`,提高了效率和代码的可读性。
2 个回答

AI回答帮忙搞定了。

let index = 0; // 用于追踪 arr2 的当前值索引

arr1.forEach(item => {

if (item.key === 'input' && index < arr2.length) {
    item.value = arr2[index];
    index++;
}
});

console.log(arr1);
let arr1 = [
  {key: 'text', value: ''},
  {key: 'input', value: ''},
  {key: 'input', value: ''},
  {key: 'text', value: ''}
];

let arr2 = ['a1', 'b2'];

let inputIndex = 0;
for (let i = 0; i < arr1.length && inputIndex < arr2.length; i++) {
  if (arr1[i].key === 'input') {
    arr1[i].value = arr2[inputIndex];
    inputIndex++;
  }
}

console.log(arr1);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏