gpt4 book ai didi

javascript - 存储一个里面有数组的对象?

转载 作者:行者123 更新时间:2023-11-30 07:56:56 24 4
gpt4 key购买 nike

有没有办法用array[id] = "certain value" 存储一个对象,这样每个用户都有一个最喜欢的东西列表?

我想要实现的是首先拥有一个具有未定义值的数据对象,然后填充它们,例如,Jack 和 Sam 可以保存指定的最喜欢的电影。

我尝试过类似的方法但没有成功:

数据.js:

module.exports = function() {
return {
favMovie: ""
}
};

应用程序.js:

var person [] = data();

//1st person
person[811767132257839].favMovie = "Matrix";

//2nd person
person[107230716367889].favMovie = "Kill Bill";

//3rd person
person[973676332752239].favMovie = "Avatar";

...

console.log( "Favorite movie: " + person[id].favMovie );

最佳答案

听起来您根本不需要任何数组,只需要对象。

// Create an object that we'll keep person objects in
var personData = {};

// Add a person object to it for person ID #123
personData[123] = {};

// Set person #123's favorite movie:
personData[123].favMovie = "Avatar";

// Add a different person; this time, we'll add the movie at
// the same time
personData[234] = {
favMovie: "Matrix"
};

当像那样使用对象作为映射时,有时人们使用 Object.create(null) 创建对象以避免它们具有任何继承属性(如 toStringvalueOf构造函数):

person[123] = Object.create(null);
person[123].favMovie = "Avatar";

在 ES2015(又名“ES6”)中,您可能希望使用 Map 而不是对象来绘制人物 map :

var personData = new Map();

...然后对个人对象使用setget

如果个人对象变得复杂,您可以使用构造函数和关联的原型(prototype),使用 ES5 语法:

function Person() {
// ...
}
Person.prototype.doSomething = function() {
// ...
};

...或 ES2015 语法:

class Person {
constructor() {
// ...
}
doSomething() {
// ...
}
}

然后创建它们:

personData[123] = new Person();
// or if using Map
personData.set(123, new Person());

旁注:即使我们将它们写成数字,对象中的键(属性名)始终是字符串(除非您使用 ES2015 Symbol,您可能不会在这里)。相反,ES2015 Map 中的键可以是任何东西。 Map 实例中的键相等性是使用特殊的 "same value zero" 确定的算法(基本上是 === 除了 NaN 等于它自己 [而它不在 ===] 中)。

关于javascript - 存储一个里面有数组的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37643464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com