Javascript 什么时候应该在数组上使用对象,反之亦然?

Javascript 什么时候应该在数组上使用对象,反之亦然?,javascript,Javascript,我通常使用数组来完成可能更适合使用对象的任务。与其继续怀疑使用对象来完成任务是否更好,我决定提出堆栈溢出的问题 array = ["James", 17]; object = {name:"James", age:17}; 它们在语法上似乎相似,在我看来,它们在使用时似乎达到了相同的效果。什么时候应该在数组上使用对象,反之亦然?关于何时应该使用一个键而不是另一个键,是否有一般规则?如果需要命名键(键:值对),请使用对象,否则请使用数组。甚至可以对对象使用数组表示法: object = {nam

我通常使用数组来完成可能更适合使用对象的任务。与其继续怀疑使用对象来完成任务是否更好,我决定提出堆栈溢出的问题

array = ["James", 17];
object = {name:"James", age:17};

它们在语法上似乎相似,在我看来,它们在使用时似乎达到了相同的效果。什么时候应该在数组上使用对象,反之亦然?关于何时应该使用一个键而不是另一个键,是否有一般规则?

如果需要命名键(键:值对),请使用对象,否则请使用数组。甚至可以对对象使用数组表示法:

object = {name:"James", age:17};
object['name'];    // James

在您的情况下,看起来您正在字段中存储关于某人的信息。在这里,使用对象非常有意义,因为键标识了存储在每个字段中的数据类型。数组用于简单的数据列表。

在第一个使用数组的示例中,您正在该数组中设置两个索引之间的关系。这是不鼓励的,因为您的代码没有您想要将一个和另一个关联起来的固有知识。这是使用第二行中的对象的绝佳机会

考虑同时使用它们的机会:

var match = {};

var peopleProps = {
    hair: ['brown', 'blonde', 'red'],
    eyes: ['brown', 'blue', 'green']
};

var person = {
   name: 'James',
   age: '17',
   hair: 'brown',
   eyes: 'blue'
};


for(var prop in person) {
    for(var subProp in peopleProps) {
      for(var i=0, l=peopleProps[subProp].length; i<l; i++) {
        if(prop == subProp && person[prop] === peopleProps[subProp][i]) {
          (match[prop][subProp])? match[prop][subProp]++ : match[prop][subProp] = 1;
        }
      }
    }
}
var-match={};
变量peopleProps={
头发:[“棕色”、“金色”、“红色”],
眼睛:[‘棕色’、‘蓝色’、‘绿色’]
};
个人变量={
姓名:“詹姆斯”,
年龄:'17',
头发:“棕色”,
眼睛:“蓝色”
};
用于(var道具本人){
for(peopleProps中的var子P){

对于(var i=0,l=peopleProps[subsp].length;i而言,关键是:抽象级别。您需要按照“现实生活”中的方式对数据进行建模。数组是一个项目列表,对象是一个项目。

看看你想做什么任务?如果它不转换为CSV,那么对象通常更适合。非常感谢。与我以前为索引设置常量的方法相比,这显然是一种更好的方法。对象似乎自己也能做到这一点。:D