Javascript JS应用阵列原型";indexOf";及;拼接;关于对象而不是数组

Javascript JS应用阵列原型";indexOf";及;拼接;关于对象而不是数组,javascript,arrays,object,Javascript,Arrays,Object,我们有一个简单的对象和方法 var o = { fn : (a)=>{} } 然后,我们向其中添加数字索引子对象 o[0] = {}; o[1] = {}; 现在我们混合了方法和数值属性 o = { "0" : {}... "1" : {}... fn : (a)=>{} } 由于各种原因,这是有帮助的。。。在JS中似乎完全合法和可能 我们更喜欢具有数值属性的对象,而不是具有方法的数组 问题是:有没有一种方法可以获得索引、拼接、各种数组。prototy

我们有一个简单的对象和方法

var o = {
   fn : (a)=>{}
}
然后,我们向其中添加数字索引子对象

o[0] = {};
o[1] = {};
现在我们混合了方法和数值属性

o = {
   "0" : {}...
   "1" : {}...
   fn  : (a)=>{}
}
由于各种原因,这是有帮助的。。。在JS中似乎完全合法和可能

我们更喜欢具有数值属性的对象,而不是具有方法的数组

问题是:有没有一种方法可以获得索引、拼接、各种
数组。prototype
方法来处理这个问题?

我们已经尝试过这样的东西:

[].indexOf.call(o,_index) // didn't work

唯一的解决方案是将对象构造为数组,并在其上附加方法吗?或者有另一种方法可以在对象上应用
数组.prototype
方法?

您可以将数组作为目标。结果是一个包含所有数组方法的数组

var o={0:foo',1:bar',fn:a=>{};
log(Object.assign([],o).indexOf('bar')可以使用数组作为目标。结果是一个包含所有数组方法的数组

var o={0:foo',1:bar',fn:a=>{};

log(Object.assign([],o).indexOf('bar')
如果您给对象一个
长度
属性,您可以通过后门侵入数组方法。我想没有人会真的建议这样做,但是JS规范的编写方式是寻找
长度
并迭代序列号,其中许多方法都可以工作:

设o={
“0”:“0”,
“1”:“一”,
长度:3,
fn:(a)=>{},
"二":"二",,
}
log(Array.prototype.slice.call(o,1))
log(Array.prototype.indexOf.call(o,“2”))
Array.prototype.splice.call(o,1,0,“三”)
//拼接和调整长度

console.log(o)
如果你给你的对象一个
长度
属性,你可以通过后门进入数组方法。我想没有人会真的建议这样做,但是JS规范的编写方式是寻找
长度
并迭代序列号,其中许多方法都可以工作:

设o={
“0”:“0”,
“1”:“一”,
长度:3,
fn:(a)=>{},
"二":"二",,
}
log(Array.prototype.slice.call(o,1))
log(Array.prototype.indexOf.call(o,“2”))
Array.prototype.splice.call(o,1,0,“三”)
//拼接和调整长度

console.log(o)
这是对象而不是数组,当您可以直接访问
o[index]
并且对于任何数组方法,使用
object.keys()、object.values或object.entries
然后访问key和values时,为什么需要indexOf?如果从数组开始并向其添加
fn
属性,您可能会更高兴。“有没有办法获得indexOf、splice、各种Array.prototype方法来处理这个”以及这个方法如何准确地处理一个对象?你可以通过它的键来处理对象,你有方法删除特定的键/值你也可以对对象执行所有这些操作。例如:
indexOf
将是
object.keys(o).find(k=>o[k]===value)
拼接
将从
开始
循环到
结束
索引和
删除o[index]
这是对象而不是数组,为什么当您可以直接访问
o[index]
时需要索引,对于任何数组方法,请使用
对象。键(),Object.values或Object.entries
,然后访问key和values可能会让您更乐意从数组开始,并向其中添加
fn
属性。“有没有办法获取indexOf、splice和各种array.prototype方法来处理此问题“这对一个对象究竟是如何工作的呢?您可以通过它的键来创建对象,并且您有删除特定键/值的方法。您也可以对对象执行所有这些操作。”。例如:
indexOf
将是
Object.keys(o).find(k=>o[k]==value)
。而
拼接
将从
开始
循环到
结束
索引和
删除o[索引]