首页 > 解决方案 > 使用命名属性声明 ojbects 的 javascript 数组的语法

问题描述

我希望能够通过对象属性的名称引用对象的 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']
 ];

标签: javascriptarraysmultidimensional-array

解决方案


我不知道您的困惑来自哪里,但您最好将您的电话号码定义为普通对象,例如

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

推荐阅读