使用javascript更改嵌套对象数据

Change nested object data with javascript

本文关键字:对象 数据 嵌套 javascript 使用      更新时间:2023-09-26

我想影响数组中的所有项。最终结果将是每个项目的decodeURIcomponent

它对我不起作用,所以我决定更改每个项目的值来检查代码。它不会改变任何事情。

有没有更好的方法可以做到这一点,因为真正嵌套的$.each函数对我来说似乎有点多余

$(function() {
var hResponse = [];
hResponse.push("firstName", "lastName", "location");
var columns = [];
columns.push({
    "firstName": "Edward",
        "lastName": "Dane",
        "location": " Here"
}, {
    "firstName": "Arthur",
        "lastName": "Dee",
        "location": "There"
}, {
    "firstName": "Cherry",
        "lastName": "Red",
        "location": "OverHere"
});
$.each(columns, function (key, value) {
    $.each(value, function (key1, value2) {
        value2 = "Meeeeep";
        //value2 = decodeURIComponent(value2);
    });
});
$('#my-table').dynatable({
    dataset: {
        records: columns
    }
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<link href="https://s3.amazonaws.com/dynatable-docs-assets/css/jquery.dynatable.css" rel="stylesheet"/>
<script src="https://s3.amazonaws.com/dynatable-docs-assets/js/jquery.dynatable.js"></script>
<table id="my-table">
    <thead>
        <th>FirstName</th>
        <th>LastName</th>
    </thead>
    <tbody></tbody>
</table>
<br>

JavaScript都是通过值传递的。为变量赋值不会更改另一个变量或属性的值(全局和with作用域除外)。您必须将更改后的值重新指定给对象特性。

对您的代码进行最小的更改:

$.each(columns, function (key, value) {
    $.each(value, function (key1, value2) {
        value[key] = decodeURIComponent(value2);
    });
});