#javascript #object
#javascript #объект
Вопрос:
У меня есть несколько объектов в массиве. Я хочу сравнить object[0].position с object[1].position и, если эти два значения были равны, object[0].position = 0 . как я могу это сделать?
`
function carInfo(name) {
this.name = name;
this.position = 0;
}
let numOfCars = prompt("Enter Number of Cars: ");
for (let i = 0; i < numOfCars; i ) {
carNames.push(new carInfo(prompt(`Enter Name of Car No.${i 1} : `)));
}
let str = "*";
str = str.repeat(300);
console.log(str);
function shuffleArray(array) {
for (let i = 0; i < array.length; i ) {
let temp = Math.floor(Math.random() * 10 1);
array[i].position = temp;
if (array[i].position >= 300) {
alert("game end! " '"' array[i].name '"' " win");
break;
}
}
return array;
}
`
Комментарии:
1. Могут ли более 2 объектов использовать одно и то же
position
значение и должны ли они все быть установленыposition: 0
? Происходит ли сравнение объектов только между 2 последовательно проиндексированными объектами? Я думаю, вам нужно уточнить свой вопрос.2. [ссылка] ( codepen.io/msna218/pen/VwKQvZJ )
3. нет. мне нужно, если object[index].position === object[index 1].position в этом случае object[index].position = 0. нет, мне не нужно, чтобы все было установлено 0
Ответ №1:
по их положению. Я хочу сказать:
If(object[i].position === object[i 1].position){
object[i].position = 0;
}
Ответ №2:
Если все ваши объекты в массиве имеют атрибут ‘position’, вы можете отобразить массив и для каждого элемента проверить их положение. Для каждого объекта в массиве вы пытаетесь сравнить его со следующим объектом в массиве? Если это так, это может выглядеть примерно так:
objectArr.map((object, index) => {
if (object.position === objectArr[index 1].position){
// The position's are equal, do something
}
})
Если для каждого объекта в массиве вы хотите сравнить его со всеми другими объектами в массиве, вы можете сначала отсортировать массив на основе позиции объектов, чтобы сэкономить время.
Комментарии:
1. Я делаю это и выдаю ошибку » Uncaught TypeError: не удается прочитать свойство ‘position’ неопределенного»
2. функция shuffleArray(array) { for (пусть i = 0; i < array.length; i ) { пусть temp = Math.floor(Math.random() * 10 1); array[i].position = temp; если (array[i].position >= 300) { оповещение («конец игры! » ‘»‘ array[i].name ‘»‘ » win»); break; } array.map((object, index) => { if (object.position === object[index 1].position) { object.position = 0; } }); } возвращает массив; }
3. Тогда я предполагаю, что вы неправильно устанавливаете положение каждого объекта. Могу ли я увидеть код, в котором вы создаете массив и устанавливаете позиции?
4. Взгляните на изменения, которые я внес. Обратите внимание, что в конце файла я добавил
start()
для вызова функции start . codepen.io/gavischneider/pen/poEajbp?editors=10115. Нет проблем. Если мой ответ вам помог, пожалуйста, отметьте его как правильный, чтобы другие люди могли его увидеть.
Ответ №3:
Я делаю это со своим кодом
objectArr.map((object, index) => {
if (object.position === objectArr[index 1].position){
// The position's are equal, do something
}
})
но выдает ошибку
Cannot read property 'position' of undefined
я делаю это
function shuffleArray(array) {
for (let i = 0; i < array.length; i ) {
let temp = Math.floor(Math.random() * 10 1);
array[i].position = temp;
if (array[i].position >= 300) {
alert("game end! " '"' array[i].name '"' " win");
break;
}
array.map((object, index) => {
if (object.position === object[index 1].position) {
object.position = 0;
}
});
}
return array;
}