javascript从数组创建字典
我有一个这样的数组javascript从数组创建字典,javascript,angularjs,arrays,dictionary,Javascript,Angularjs,Arrays,Dictionary,我有一个这样的数组 propertiesToCheck: [ {name: 'name', type: 'type', enabled: true}, { name: 'name2', type: 'type2', templateUrl: 'something.html', preferences: { places: [place1, place2,...], pl
propertiesToCheck: [
{name: 'name', type: 'type', enabled: true},
{
name: 'name2',
type: 'type2',
templateUrl: 'something.html',
preferences: {
places: [place1, place2,...],
placesDict: ????
},
enabled: true
}
]
在places
数组中有id、name等对象。现在我想创建一个字典placesDict
,它看起来应该像{place1.id:0,place2.id:0,…}
,所以所有值都将设置为0。我该怎么做
var placesDict = {};
propertiesToCheck[1].preferences.places.forEach(place => {
placesDict[place.id] = 0;
});
同样的事情,但是使用函数定义而不是箭头函数
var placesDict = {};
propertiesToCheck[1].preferences.places.forEach(setPlace);
function setPlace (place) {
placesDict[place.id] = 0;
}
要将此功能附加到
首选项
对象的方法,请执行以下操作:
propertiesToCheck: [
{name: 'name', type: 'type', enabled: true},
{
name: 'name2',
type: 'type2',
templateUrl: 'something.html',
preferences: {
places: [place1, place2,...],
placesDict: () => {
newDict = {};
propertiesToCheck[1].preferences.places.forEach(place => newDict[place.id] = 0);
return newDict;
}
},
enabled: true
}
]
console.log(propertiesToCheck[1].preferences.placesDict()); // {place1.id: 0, place2.id: 0, ...}
将属性placesDict
设置为等于函数返回值:
propertiesToCheck: [
{name: 'name', type: 'type', enabled: true},
{
name: 'name2',
type: 'type2',
templateUrl: 'something.html',
preferences: {
places: [place1, place2,...],
placesDict: createDict()
},
enabled: true
}
]
function createDict() {
var placesDict = {};
propertiesToCheck[1].preferences.places.forEach(place => {
placesDict[place.id] = 0;
});
}
我希望这有帮助 例如:
var createDict = R.pipe(R.pluck('id'), R.map(R.pair(R.__, 0)), R.fromPairs);
var places = [{ id: 'place1id' }, { id: 'place2id' }];
var placesDict = createDict(places);
// {"place1id": 0, "place2id": 0}
我可以在首选项中执行此操作吗?例如:
placesDict:createDict(places)
createDict(places)将在何处返回新词典?这是原始问题的一部分吗?我最初没有看到位置信息:?
。无论如何,是的,你可以做到。看我的补充答案。通常,你用“id”来识别一些东西。为什么要将所有id设置为0?那么,pacesDict真的应该是每个数组元素中的一个字段吗?也许我不清楚。我想要一个字典,其中有id或用作键的位置的名称,默认情况下,所有值都设置为0。稍后我想让用户设置值,如果他想这样做,否则将保持0。我不希望ID为0,只希望是字典的值。我将向用户展示它,以便他可以更改值,我想我知道如何对已知项执行此操作,但是places
array是动态的,因此我不能将所有内容都写入代码中。。