Я пытаюсь взять массив, упорядочить этот массив по версии, а затем переместить все версии, начинающиеся с «ipad», в конец списка.
фрагмент из одного файла компонента vue.js:
computed: {
orderedUsers: function () {
let newArray = sortBy(this.jobs, 'version').reverse()
for (i in newArray) {
if (i.version.startsWith('iPad')) {
newlist.push(newlist.splice(i, 1)[0]);
}
}
return newArray
},
ошибка:
vue.runtime.esm.js?e832:619 [Vue warn]: Error in render: "ReferenceError: i is not defined"
Не уверен, что это вопрос js или вопрос vue.js
for (i in newArray) {
должно быть for (const i of newArray) {
. for...in
для перебора собственных свойств объектов. Для массивов используйте for...of
.
следующий вопрос, почему я получаю сообщение об ошибке «новый список не определен» из простого цикла for в скрипте компонента vue.js? определите свои переменные перед использованием
Попробуйте добавить let i, прежде чем использовать его в цикле for. См. пример ниже.
for (let i in newArray) {
if (i.version.startsWith('iPad')) {
newlist.push(newlist.splice(i, 1)[0]);
}
}
Несколько проблем с исходным кодом.
const
/let
на i
in
петля должна быть of
. А может и нет. В следующих строках предполагается, что i
является и индексом, и записью.newlist
не определено.Я думаю, вы ищете что-то более похожее на это.
const newArray = sortBy(getData(), 'version').reverse()
const nonIPads = []
const iPads = []
for (const entry of newArray) {
if (entry.version.startsWith('iPad')) {
iPads.push(entry)
} else {
nonIPads.push(entry)
}
}
const all = [...nonIPads, ...iPads]
console.info(all)
function sortBy(array, property) {
return [...array].sort((a, b) => {
const valueA = a[property]
const valueB = b[property]
if (valueA === valueB) {
return 0
}
return valueA < valueB ? -1 : 1
})
}
function getData() {
return [
{version: 'f'},
{version: 'a'},
{version: 'd'},
{version: 'iPad 3'},
{version: 'iPad 1'},
{version: 'iPad 4'},
{version: 'e'},
{version: 'c'},
{version: 'g'},
{version: 'b'},
{version: 'iPad 2'}
]
}
for (i in newArray) {
должно бытьfor (const i in newArray) {
.