Ale*_*lls 4 javascript json node.js
说我们有这个:
const v = [1,2,3];
v.foo = 5;
console.log(JSON.stringify(v));
Run Code Online (Sandbox Code Playgroud)
我们将得到:
'[1,2,3]'
Run Code Online (Sandbox Code Playgroud)
并且将忽略数组上的'foo'属性.但是,如果我们这样做:
console.log(Object.keys(v));
Run Code Online (Sandbox Code Playgroud)
我们将得到:
[ '0', '1', '2', 'foo' ]
Run Code Online (Sandbox Code Playgroud)
我的问题是 - 我们如何只从数组中获取标准键,并忽略任何添加到数组中的属性?
我知道如何做到这一点的唯一方法是:
const keys = Object.keys(v).filter(k => Number.isInteger(parseInt(k)));
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
您可以使用
Array.from(v.keys())
Run Code Online (Sandbox Code Playgroud)
where keys返回整数索引上的迭代器(不是属性名!).请注意,Object.keys与之相反,它忽略了数组的稀疏性,即使对于空洞也会产生索引.
我想知道为什么你甚至不得不Object.keys在阵列上使用.数组只有索引,你可以用一个简单的for (let i=0; i<v.length; i++)循环生成它们.或者甚至用类似的东西 Array.from({length: v.length}, (_, i) => i).
| 归档时间: |
|
| 查看次数: |
47 次 |
| 最近记录: |