Синтаксис для объявления массива javascript объектов с именованными свойствами - PullRequest
0 голосов
/ 28 октября 2019

Я хочу иметь возможность ссылаться на массив объектов javascript по именам свойств объекта

 var currentColour = phones[1].TextColour;

или даже лучше

var currentColour = phones(Number == "7483427273").TextColour;

Как мне объявить массив?

Что я пробовал ...

var phones = [ new Object(Number = '1234282248', DisplayBold = false),
new Object(Number = ... etc ];

var phones = [ [ new phone(Number = '1234282248', DisplayBold = false ... etc

(с различными комбинациями квадратных и фигурных скобок)

Это самое ближайшее, что я могу получить, но на него ссылаютсятолько по номерам: (т.е. телефоны [1] [3])

 var phones = [
   [Number = '1234282248', DisplayBold = false, DisplayItalic = true, FillColour = '#FF4169E1', TextColour = '#FFFFFF00'],
   [Number = '7483427273', DisplayBold = true, DisplayItalic = false, FillColour = '#FFFF0000', TextColour = '#FFADFF2F'],
   [Number = '9465601196', DisplayBold = true, DisplayItalic = false, FillColour = '#FF191970', TextColour = '#FFF0FFFF']
 ];

Ответы [ 3 ]

2 голосов
/ 28 октября 2019

Я не знаю, откуда исходит путаница, но вам лучше определить свои номера телефонов как обычный объект, например

var phones = [
   {Number: '1234282248', DisplayBold: false, DisplayItalic: true, FillColour: '#FF4169E1', TextColour: '#FFFFFF00'},
   {Number: '7483427273', DisplayBold: true, DisplayItalic: false, FillColour: '#FFFF0000', TextColour: '#FFADFF2F'},
   {Number: '9465601196', DisplayBold: true, DisplayItalic: false, FillColour: '#FF191970', TextColour: '#FFF0FFFF'}
 ];

, и тогда вы сможете найти номер телефона, используя метод Array.prototype.find,например:

let match = phones.find( p => p.Number === '7483427273' );
if ( !match) {
  // no match found
  return;
}
// here match would be the second phone number in the array

, если вы просто хотите найти индекс, вы можете использовать метод Array.prototype.findIndex, например:

let index = phones.findIndex( p => p.Number === '7483427273' );
if ( index === -1) {
  // no match found
  return;
}
// here index would be 1 as the second phone number in the array
0 голосов
/ 28 октября 2019

Сначала вам нужно будет использовать правильный Синтаксис инициализатора объекта для создания массива телефонов.

let phones = [{
    Number: '1234282248',
    DisplayBold: false,
    DisplayItalic: true,
    FillColour: '#FF4169E1',
    TextColour: '#FFFFFF00'
  }, ...

Затем вы можете использовать find , чтобы найтиобъекты с необходимыми значениями свойств:

let phones = [{
    Number: '1234282248',
    DisplayBold: false,
    DisplayItalic: true,
    FillColour: '#FF4169E1',
    TextColour: '#FFFFFF00'
  },
  {
    Number: '7483427273',
    DisplayBold: true,
    DisplayItalic: false,
    FillColour: '#FFFF0000',
    TextColour: '#FFADFF2F'
  },
  {
    Number: '9465601196',
    DisplayBold: true,
    DisplayItalic: false,
    FillColour: '#FF191970',
    TextColour: '#FFF0FFFF'
  }];

// get the first phone with the desired Number
let currentPhone = phones.find((phone) => phone.Number == "7483427273");
let currentColour = currentPhone.TextColour;

console.log('Current colour:', currentColour);
0 голосов
/ 28 октября 2019
const phones = [
{Number: '1234', DisplayBold: false, DisplayItalic: true, FillColour: '#etc'},
{Number: '1234', DisplayBold: false, DisplayItalic: true, FillColour: '#etc'},
{Number: '1234', DisplayBold: false, DisplayItalic: true, FillColour: '#etc'},
];

Затем вы получаете доступ к нему, делая phones[index].Number

...