Javascript 通过Vue中的键交换阵列内容

Javascript 通过Vue中的键交换阵列内容,javascript,vue.js,Javascript,Vue.js,我有一个数组,其中内容是通过键而不是索引添加的 在沙箱中玩耍时,我注意到以下几点: 即使我通过键(而不是索引)将内容添加到数组中,内容也不会显示,长度为0(即使它们在那里) 我似乎无法在数组项之间交换内容 在使用键而不是索引来查看内容和交换内容时,是否有我不知道的规则 我在这里做了一把白骨小提琴: []使用数字和字符串值作为索引, 但是,使用字符串索引添加的元素只能被视为 数组对象的属性,而不是真正的数组元素 Length属性以及数组方法仅应用于具有数字索引的元素 在这里阅读更多关于它的信息

我有一个数组,其中内容是通过键而不是索引添加的

在沙箱中玩耍时,我注意到以下几点:

  • 即使我通过键(而不是索引)将内容添加到数组中,内容也不会显示,长度为0(即使它们在那里)
  • 我似乎无法在数组项之间交换内容
在使用键而不是索引来查看内容和交换内容时,是否有我不知道的规则

我在这里做了一把白骨小提琴:


[]使用数字和字符串值作为索引,

但是,使用字符串索引添加的元素只能被视为 数组对象的属性,而不是真正的数组元素

Length属性以及数组方法仅应用于具有数字索引的元素

在这里阅读更多关于它的信息

{}使用字符串和符号作为键

虽然可以将对象添加到数组中

就你而言

<div id="app">
 <button @click="swap('abc', 'def')">Swap</button>
 <p>Blah:{{ blah }} {{ blah.length }}</p>
 <p>BlahABC: {{ blahAbc }} </p>
 <p>BlahDEF: {{ blahDef }} </p>
</div>
您可以清楚地看到,
blah
没有数字索引,因此length返回0

这是一把小提琴

它会在单击按钮时交换数组的内容。

您是在寻找对象而不是数组吗?Li357-blah是数组。数组的内容可以是任何内容。正在使用键而不是indexesRight。如果需要非数字键,为什么要使用数组?它不跟踪非数字关键点。使用一个对象并计算键数。我可以清楚地看到这个.blah['abc']在计算调用中的输出,所以它以某种方式被添加。你能解释一下它是如何工作的吗?JS不是一种静态类型的语言。变量可以在任何时候分配任何类型的值,例如,变量a=1可以重新分配一个=“test”字符串。在您的情况下,即使您在说blah['abc']时将其声明为数组,它也会变为object@ekjcfn3902039在编辑的回答中检查代码。它不会抛出错误,但也不会计算字符串键。这就好像变量同时变成了一个数组和一个对象,这两种原型方法都可以工作。但是数组方法只对数值键起作用。
<div id="app">
 <button @click="swap('abc', 'def')">Swap</button>
 <p>Blah:{{ blah }} {{ blah.length }}</p>
 <p>BlahABC: {{ blahAbc }} </p>
 <p>BlahDEF: {{ blahDef }} </p>
</div>
Blah:[] 0

BlahABC: foo

BlahDEF: bar