将属性/索引添加到数组中的每个元素

Ali*_*Ali 3 javascript

我调用一个返回一个对象数组的webservice:

$.ajax({
  dataType: "json",
  url: "WebServices/FetchMenu.aspx?P=0&L=2&mt=1",
  //data: data,
  success: function (data) {
    var foo = data;
  }
});
Run Code Online (Sandbox Code Playgroud)

这是回应:

[
    {
        color: "red",
        value: "#f00"
    },
    {
        color: "green",
        value: "#0f0"
    },
    {
        color: "blue",
        value: "#00f"
    },
    {
        color: "cyan",
        value: "#0ff"
    }
]
Run Code Online (Sandbox Code Playgroud)

我想row_number为每个元素添加一个属性,该元素包含数组中元素的当前索引.

我需要这个,因为我稍后会更改元素的顺序,但希望能够识别元素的原始位置.

dar*_*ipo 7

如果您想保留旧对象,或者想在调用链中执行此操作而不修改现有数组,您也可以使用映射。

const oldArray = [{a: 'Andy'}, {b: 'Betty'}, {c: 'Charlie'}];
const newArray = oldArray.map((item, index) => ({index, ...item}));
console.log(newArray);
// Array [Object { index: 0, a: "Andy" }, Object { index: 1, b: "Betty" }, Object { index: 2, c: "Charlie" }]
Run Code Online (Sandbox Code Playgroud)


Fel*_*ing 6

没有什么特别的事要做.只需迭代数组并将属性添加到每个元素:

for (var i = 0; i < foo.length; i++) {
  foo[i].row_number = i;
}

// or with forEach

foo.forEach(function(row, index) {
  row.row_number = index;
});
Run Code Online (Sandbox Code Playgroud)

有关JavaScript中嵌套数据结构的更多常规信息,请参阅访问/进程(嵌套)对象,数组或JSON.