用另一个不同长度的数组更新对象数组

Posted

技术标签:

【中文标题】用另一个不同长度的数组更新对象数组【英文标题】:Updating an array of objects with another array of different length 【发布时间】:2021-07-30 21:25:38 【问题描述】:

我有一个包含单个键值对的对象数组,以及一个长度可能小于对象数组的字符串数组。

let objectArray = [
    foo: '',
    foo: '',
    foo: '',
    foo: '',
    foo: ''
  ]

let stringArray = ['a','b','c']

我想将字符串数组按顺序分配给对象数组中的 foo 键。如果长度较短,字符串数组将被重用。例如,想要的输出是:

let result = [
    foo: 'a',
    foo: 'b',
    foo: 'c',
    foo: 'a',
    foo: 'b'
  ]

实现这一结果的最有效方法是什么?

【问题讨论】:

【参考方案1】:

您可能想要使用余数 (%) 运算符来“环绕”。

见:https://developer.mozilla.org/en-US/docs/Web/javascript/Reference/Operators/Remainder


let objectArray = [
  foo: '',
  foo: '',
  foo: '',
  foo: '',
  foo: ''
];
let stringArray = ['a','b','c'];

console.log(
  objectArray.map((elem, idx) => 
    elem.foo = stringArray[idx % stringArray.length];
    return elem;
  )
);

【讨论】:

以上是关于用另一个不同长度的数组更新对象数组的主要内容,如果未能解决你的问题,请参考以下文章

用另一个对象数组过滤对象数组

我有一个基于所选城市长度不同的对象数组。如何选择包含具有特定属性的对象的元素?

javaScript的数组对象

在不同组件中使用相同的对象数组,如果对一个对象进行任何更新,将在角度 8 中显示其他组件中的更新

我似乎无法获得对象内部数组的长度

批量设置vue长度