Как получить значение в массиве объектов в JavaScript - PullRequest
3 голосов
/ 15 мая 2019

Я хотел бы знать, как получить / извлечь объект во вложенном массиве, используя JavaScript.

var value = "SGD"
var obj=[{
  country: singapore,
  ccy: ["EUR","SGD"]
  amount: "1000"
},{
  country: thailand,
  ccy: ["THB"]
  amount: "1000"
}]

function getData(){
 return obj.filter((e)=>{
    return e.ccy == value; // fetch array object if it matches the value
  }
}

var result = getData();
console.log(result);

Ответы [ 4 ]

1 голос
/ 15 мая 2019

Чтобы получить массив объектов, включающий выбранную валюту в переменную value, вы можете использовать Array.prototype.filter () в сочетании с Array.prototype.include () :

const value = 'SGD';
const obj = [{country: 'singapore',ccy: ['EUR', 'SGD'],amount: '1000'}, {country: 'thailand',ccy: ['THB'],amount: '1000'}];
const getData = (arr, value) => arr.filter(o => o.ccy.includes(value));

const result = getData(obj, value);
console.log(result);

Обратите внимание, что вместо функции getData, использующей переменные вне области действия функции, лучше передать нужные параметры в функцию getData(obj, value)

0 голосов
/ 15 мая 2019

var obj=[{
  country: 'singapore',
  ccy: ["EUR","SGD"],
  amount: "1000"
},{
  country: 'thailand',
  ccy: ["THB"],
  amount: "1000"
}]

function getData(val) {
   var result = obj.find(function(o) {
   return o.ccy.indexOf(val) > -1;
   });
return result;
}

console.log(getData('SGD'));
0 голосов
/ 15 мая 2019

e.ccy - это массив. Сравнение с любой другой переменной никогда не вернет true, если оба не имеют одинаковую ссылку. Чтобы проверить, присутствует ли элемент в массиве, используйте Array.prototype.includes()

var value = "SGD";
var obj=[{
  country: 'singapore',
  ccy: ["EUR","SGD"],
  amount: "1000"
},{
  country: 'thailand',
  ccy: ["THB"],
  amount: "1000"
}]

function getData(){
 return obj.filter((e)=>{
    return e.ccy.includes(value)
  })
}

var result = getData();
console.log(result);
0 голосов
/ 15 мая 2019

Трудно сказать по вашему вопросу, но если вы хотите, чтобы первая совпадающая запись в массиве, вы ищете метод find, используя includes on ccy в поиске:

function getData(){
    return obj.find(e => e.ccy.includes(value));
}

Live Пример:

var value = "SGD";
var obj= [{
  country: "singapore",
  ccy: ["EUR","SGD"],
  amount: "1000"
},{
  country: "thailand",
  ccy: ["THB"],
  amount: "1000"
}];

function getData() {
  return obj.find(e => e.ccy.includes(value));
}

var result = getData();
console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...