我不知道如何描述我的情况。如果问题标题不清楚,请帮我修改。
这是我的情况,我有这样的数据结构:
const medicineEntities = {
1: {name: ''},
2: {name: ''},
3: {name: ''}
ids: [1, 2],
invalidIds: [3]
};
我使用es6 rest/spread
运算符和Destructuring assignment
。
const { ids, invalidIds, ...medicines } = medicineEntities;
我只想使用medicines
。但由于eslint
,ids
和invalidIds
会给我:
[eslint] 'invalidIds' is assigned a value but never used. (no-unused-vars)
我知道我可以禁用某些eslint
规则,警告将会消失。
但我想知道如何在没有medicines
的情况下获取for-loop
。
const medicines = medicineEntities.ids.map(id => medicineEntities[id])
;
答案 0 :(得分:2)
如果没有rest parameters ...
,您可以将数组作为Object.assign
的目标,并仅获取整数数字的键。
然后使用Boolean
过滤数组以过滤稀疏元素。
Boolean
用作Array#filter
的回调并返回
在这种情况下,如果不需要undefined
,则对象(不包含null
)位于结果集中。
const
medicineEntities = { 1: { name: '' }, 2: { name: '' }, 3: { name: '' }, ids: [1, 2], invalidIds: [3] },
medicines = Object.assign([], medicineEntities).filter(Boolean);
console.log(medicines);
.as-console-wrapper { max-height: 100% !important; top: 0; }