#javascript
#javascript
Вопрос:
У меня есть основной массив и объект, который содержит массив элементов. Я хочу посмотреть, соответствует ли объект, содержащий элементы, основному индексу массива. Если совпадение, то напишите в консоль.
var mainItems = [0,1,2,3,4,5,6,7,8,9,10,"car", "boat", "truck", "plane"];
var nonStandardItems =
{
"items": [
{
"value": "8",
"code": "8ic"
},
{
"value": "boat",
"code": "10bt"
}
],
}
if( nonStandardItems.items.slice(-1)[0].value == mainItems.indexOf(nonStandardItems.items.slice(-1)[0].value) ){
console.log("you are right");
}
Однако я получаю только значение -1 и ошибку. Чего мне не хватает?
РЕДАКТИРОВАТЬ Я извлекаю данные из разных источников данных, все из которых содержат ненужные данные. Однако последний элемент в массиве нежелательных данных — это тот элемент, который мне нужен.
Я хочу проверить, соответствуют ли результаты моего запроса api «ожидаемому» или «стандартному» набору данных. Например, мой объект nonStandardItems является примером того, что я получаю от api.
Я хочу проанализировать его и проверить, имеет ли ПОСЛЕДНИЙ элемент в массиве items значение, соответствующее индексу моего стандартного массива items. Мой массив нежелательных элементов содержит числовые и текстовые данные, но последний элемент всегда будет иметь либо числовой, либо текстовый код, который я ожидаю.
Пример был надуманным и поспешным, поэтому я прошу прощения за орфографические, синтаксические и объяснительные ошибки. Ошибка, с которой столкнулась консоль, заключалась в том, что nonstandardItems.items[-1].value не существует.
Комментарии:
1. Я действительно не понимаю, что вы пытаетесь сделать. Можете ли вы описать это лучше?
2. Звучит так, как вы хотите
….value == indexOf(….code)
, а не.value
дважды3. Какую ошибку вы получаете?
4. Это
mainItems.indexOf
неmainItemsindexOf
5. когда вы используете indexOf, это возвращает -1, если значение не существует в массиве, в вашем случае вы говорите, что если mainItem содержит «14», это возвращает -1, и очевидно, что это не нормально. Теперь вы можете использовать mainItems.includes(«14»), а не indexOf это возвращает true или false и не требует сравнения
Ответ №1:
Используйте filter():
if (nonStandardItems.items.filter(v => mainItems.indexOf(v.code) == v.value).length > 0) {
console.log("you are right")
}