DrunkMaster
@DrunkMaster

Поиск значения в объекте JS?

Из PHP приходит значение в виде массива [1,2,3]
Код в JS
console.dir(value);
console.log(value);
console.log(typeof value);

Но JS говорит что тут объект а не массив
59ddb2d6638de820986774.png

Вопрос:
1) Можно ли конвертировать такой объект в массив что бы воспользоваться find(value, need) где need это число, например 27
2) Если нельзя или сложно то как проверить есть ли значение 27 в объекте без разницы у какого ключа.
  • Вопрос задан
  • 7407 просмотров
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Это обычный массив. В javascript typeof почти на всё отдаёт object, тип массивов проверяют иначе.

learn.javascript.ru/types-intro
Ответ написан
evgeniy8705
@evgeniy8705
Повелитель вселенной
console.dir(value); // Array(2) // Вам это ничего не говорит?

const arr = [20, 27];

console.log(arr.includes(27)); // true

// К тому же если бы это был объект (ассоциативный массив) в виде обычного массива (наличие порядка и длины), то...
const obj = {
  0: 20,
  1: 27,
  length: 2
};

console.log(Array.prototype.includes.call(obj, 27));  // true

// Определение типа
const getType = something => Object.prototype.toString.call(something).slice(8, -1);

console.log(getType([1, 2, 3, 4, 5])); // Array
console.log(getType({})); // Object
console.log(getType(12)); // Number
console.log(getType("iamevg")); // String

// Перевод объекта в массив.
const obj = {
  0: 20,
  1: 27,
  2: 54,
  3: 12,
  4: 67
};

console.log(Array.of(...(Object.entries(obj)).map(item => item[1]))); // [20, 27, 54, 12, 67]
console.log(Array.of(...Object.values(obj))); // тоже самое, только ES2017
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы