为什么不能通过其键使用映射迭代和对象? [重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么不能通过其键使用映射迭代和对象? [重复]相关的知识,希望对你有一定的参考价值。
我有这个对象
layouts =
lg: [
i: 'a', x: 0, y: 0, w: 5.9, h: 3.2 ,
i: 'b', x: 6, y: 0, w: 5.9, h: 3.2 ,
i: 'c', x: 0, y: 6, w: 11.9, h: 3.2
],
md: [
i: 'a', x: 0, y: 0, w: 1, h: 2 ,
i: 'b', x: 1, y: 0, w: 3, h: 2 ,
i: 'c', x: 4, y: 2, w: 1, h: 2
],
sm: [
i: 'a', x: 0, y: 0, w: 1, h: 2 ,
i: 'b', x: 1, y: 0, w: 3, h: 2 ,
i: 'c', x: 4, y: 2, w: 1, h: 2
],
xs: [
i: 'a', x: 0, y: 0, w: 1, h: 2 ,
i: 'b', x: 1, y: 0, w: 3, h: 2 ,
i: 'c', x: 4, y: 2, w: 1, h: 2
],
xxs: [
i: 'a', x: 0, y: 0, w: 1, h: 2 ,
i: 'b', x: 1, y: 0, w: 3, h: 2 ,
i: 'c', x: 4, y: 2, w: 1, h: 2
]
在功能上我有这个
var removeIndex = layouts.lg.map(function (item) return item.i; ).indexOf(id);
~removeIndex && layouts.lg.splice(removeIndex, 1);
var removeIndex = layouts.md.map(function (item) return item.i; ).indexOf(id);
~removeIndex && layouts.md.splice(removeIndex, 1);
var removeIndex = layouts.sm.map(function (item) return item.i; ).indexOf(id);
~removeIndex && layouts.sm.splice(removeIndex, 1);
var removeIndex = layouts.xs.map(function (item) return item.i; ).indexOf(id);
~removeIndex && layouts.xs.splice(removeIndex, 1);
var removeIndex = layouts.xxs.map(function (item) return item.i; ).indexOf(id);
~removeIndex && layouts.xxs.splice(removeIndex, 1);
删除所有包含“ id”值的元素,这些值等于对象中的I。
这样很好,如果我单击remove(a),它将删除所有的巧合。还是C或b取决于参数。
问题是我想将其转换为更易读的内容,所以我做到了。
for(let key in layouts)
console.log(key) //lg ---> should continue with md, sm , xs, xxs
var removeIndex = layouts.key.map(function (item) return item.i; ).indexOf(id);
~removeIndex && layouts.key.splice(removeIndex, 1);
但它崩溃
未捕获的TypeError:无法读取未定义的属性'map'
然后如何读取这些值?
答案
您可以使用Array#findIndex
代替映射和Array#findIndex
。
indexOf
以上是关于为什么不能通过其键使用映射迭代和对象? [重复]的主要内容,如果未能解决你的问题,请参考以下文章
打字稿:如何制作接受对象的类型,其键匹配通用但所有值都是值参数的映射函数