gpt4 book ai didi

javascript - 如何使用简单的for循环以编程方式在js中创建字典

转载 作者:行者123 更新时间:2023-11-30 20:43:46 26 4
gpt4 key购买 nike

我需要以编程方式创建带有“名称”和“路径”键值的字典,并将它们存储在项目列表中

const state = {
items: [
{
name: user.name,
path: user.path,
},
{
name: user.name,
path: user.path,
},
]
}

上面的示例是我在这里尝试做的所有事情,只是我需要能够以编程方式在列表中创建字典。

要将其分解为多个步骤,我认为我需要做的是:

  • 遍历列表中的每个元素
  • 根据该元素的名称/路径创建字典
  • 将字典附加到列表中

我有 Python 背景,所以不完全确定如何在 .js 中执行此操作,这些步骤可能不正确。

最重要的部分是,我需要保留上面的结构,因为它正在被另一个 js 模块调用/摄取

假设我们有一个看起来像这样的列表:

[ user1: {name: 'ben'}, user2: {path: 'none'}]

遍历此示例并创建上面的主要示例的最简洁方法是什么?

另外还有关于加分的问题,我可以只创建一个名为 somelistname 的列表并将字典附加到列表中然后执行

const state = {
items: somelistname
}

这会和我的例子一样吗?

最佳答案

有很多方法可以做到这一点,但我会像这样举一个例子,也许这有助于阐明真正的目的。

/*
var data = [
user1: {
name: 'ben'
},
user2: {
path: 'none'
},
];

This isn't valid...
*/

// if it's a string though...
var strangeString = "[ user1: {name: 'ben'}, user2: {path: 'none'}]";

var arrayFromString = strangeString.slice(1, -1).split(',');
// would cut off the first and last character - and then break it up in to pieces by the comma an put that into an array

console.log(arrayFromString);

var newObject = {}; // create the object...
newObject.items = []; // create an array in that object

// loop through the array with the forEach method
arrayFromString.forEach( function(currentValue, index, fullArray) {
currentValue = currentValue.trim();
var user = {
name: currentValue.name
}
newObject.items.push(user); // keep adding to the items array
});

console.log( newObject );
console.log( JSON.stringify(newObject) );

这可能都是一个接受字符串的函数……但我猜你可以调整你的内容以使其更有意义。您也可以查看 .map()。

https://jsfiddle.net/sheriffderek/xLgbqy4q

但是,也许您实际上有一个对象 - 而不是损坏的数组?

// no bueno
// [ user1: {name: 'ben'}, user2: {path: 'none'}]

var exampleArray = [ // if this were already an array - you wouldn't be asking this question...
{
id: 1,
name: 'Ben',
slug: 'ben',
alive: true,
},
{
id: 2,
name: 'Sheriff Derek',
slug: 'sheriff-derek',
alive: true,
},
];

var exampleObject = { // but maybe you are getting an object...
user1: {
id: 1,
name: 'Ben',
slug: 'ben',
alive: true,
},
user2: {
id: 2,
name: 'Sheriff Derek',
slug: 'sheriff-derek',
alive: true,
},
};


var newObject = {};
newObject.items = [];

for (var key in exampleObject) {
if (exampleObject.hasOwnProperty(key)) {
var item = {
id: exampleObject[key].id,
name: exampleObject[key].name,
slug: exampleObject[key].slug,
};
newObject.items.push(item);
}
}

console.log(newObject);

https://jsfiddle.net/sheriffderek/bue2vco5/

在 2015 年(较新版本)的 JavaScript 中,有一些新方法可以使这变得更加容易,因此您可以查找迭代器和键。

关于javascript - 如何使用简单的for循环以编程方式在js中创建字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48958351/

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