gpt4 book ai didi

javascript - Angularjs:将 JSON 对象转换为键、值对

转载 作者:行者123 更新时间:2023-12-02 23:13:45 27 4
gpt4 key购买 nike

我有 2 个输入文本和一个按钮。用户可以单击添加按钮,这将创建一个具有输入文本的新行,如下所示:

演示:https://jsfiddle.net/ndk29mvp/3/

您可以再次单击“添加”,它将添加更多键值文本框。

<tr ng-repeat="m in options">
<td>
<input type="text" name="optionKey_{{$index}}" class="form-control"
ng-model="m.optionText" />
</td>
<td>
<input type="text" name="optionValue_{{$index}}" class="form-control"
ng-model="m.optionValue" />
</td>
</tr>

<button type="button" class="btn btn-primary btn-sm" ng-click="Add()">
<i class="fa fa-plus"></i> Add</button>

所以基本上我是使用上面的输入创建下拉菜单文本和值。

下面是我的 Controller 代码:

$scope.options = [];

$scope.Add = function () {
var option = {};
option.optionText = $scope.optionText;
option.optionValue = $scope.optionValue;
$scope.options.push(option);
};

在我的保存函数中,我想转换用户选择的文本和值,并将它们转换为键值对。因此,如果您运行上面的演示并查看控制台输出,您将看到输出为:

(2) [{…}, {…}, {…}]
0: {optionText: "1", optionValue: "11", $$hashKey: "005"}
1: {optionText: "2", optionValue: "22", $$hashKey: "007"}

我想删除所有这些 optionText、optionvalue 等并只创建键值对,以便我创建一个 json 对象:

{ 
"1": "11",
"2": "22"
}

所以我尝试了以下代码:

$scope.data = [];

_.each($scope.options, function (value) {
$scope.data[value.optionText] = value.optionValue;
});

但是 $scope.data 有以下输出:

1: "11"
2: "22"

如何正确创建我的键、值格式数组。

抱歉,如果这是一件微不足道的事情,但不知何故我没有解决这个问题。我不知道该给这个标题起什么合适的标题。

最佳答案

使用Array.reduce() :

var optionsArr = [
{optionText: "1", optionValue: "11", $$hashKey: "005"},
{optionText: "2", optionValue: "22", $$hashKey: "007"}
];

var obj = optionsArr.reduce( (acc,i) => {
acc[i.optionText]=i.optionValue;
return acc;
}, {} );

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

关于javascript - Angularjs:将 JSON 对象转换为键、值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57237556/

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