如何解决比较数组和对象数组,然后根据指定的值将内容推入新数组
data = [ '1','2','2] objlist = [ { name : 'dummy' },{name: 'new' },{ name : 'news'},{name : 'place'}....] - 5 objects
result = [ [{name:'dummy'}],[{name:'new'},{name:'news'}],[{name : 'place'},...]]
所需结果是所需的结果数组。我是新手,因此无法继续进行操作,并且还有疑问是否可能,如果这是建议或javascript中的工作代码会有所帮助,谢谢
例如,如果数组数据的值为['1','2','2'],我想要什么,将所有元素放在一个位置的结果对象数组应该切片并制成--{{1 }}
解决方法
您可以遍历数字数组,对于每个数字n
,请使用.splice(0,n)
从对象数组中获取数组块。这将就地修改数组,允许您的下一个.splice()
获取下一个连续的对象。对于您执行的每个.splice()
,您可以.push()
将其放入结果数组。
请参见以下示例:
function partition([...arr],chunks) {
const res = [];
for(const n of chunks)
res.push(arr.splice(0,n)); // +n to turn the string number into a number (splice will do this conversion for you but you can take care of it explicitly as well)
return res;
}
const array = ['1','2','2'];
const objs = [{ name : 'dummy' },{name: 'new' },{ name : 'news'},{name : 'place'},{name : 'foo'}];
console.log(partition(objs,array));
以上,我使用的是partition([...arr],chunks)
,它使用destructuring assignment syntax执行输入数组的浅表副本。这样,当您使用.splice()
在函数中修改它时,它不会更改传入的数组。
您可以将切片的部分推入结果。
let array = [1,2,2],objlist = [{ name: 'dummy' },{ name: 'new' },{ name: 'news' },{ name: 'place' },{ name: 'place' }],result = [],i = 0,j = 0;
while (j < array.length) {
result.push(objlist.slice(i,i += array[j++]));
}
console.log(result);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。