【发布时间】:2022-01-08 11:31:11
【问题描述】:
每次搜索如何对对象数组的对象内部的元素进行重新排序(不排序)都会返回如何对数组进行排序。这不是我想要的。
这是一个退出和肮脏的例子:
let obj = [
{
name: "hi number 1a",
id: "hi number 2a",
address: "hi number 3a"
}, {
name: "hi number 1b",
id: "hi number 2b",
address: "hi number 3b"
}, {
name: "hi number 1c",
id: "hi number 2c",
address: "hi number 3c"
}, {
name: "hi number 1d",
id: "hi number 2d",
address: "hi number 3d"
}
]
我想要做的是循环遍历所有对象并重新排序它们,因此 id 现在是所有对象的名称位置,如下所示:
let obj = [
{
id: "hi number 2a",
name: "hi number 1a",
address: "hi number 3a"
}, {
id: "hi number 2b",
name: "hi number 1b",
address: "hi number 3b"
}, {
id: "hi number 2c",
name: "hi number 1c",
address: "hi number 3c"
}, {
id: "hi number 2d",
name: "hi number 1d",
address: "hi number 3d"
}
]
这是我尝试过的代码:
$scope.arraymove = (arr, fromindex, toindex) => {
let len = arr.length;
let newArr = [];
let resultArr = [];
for (let i = 0; i < len; i++) {
resultArr[i] = move(arr[i], fromindex, toindex);
newArr.push(resultArr[i]);
}
function move(thearr, old_index, new_index) {
while (old_index < 0) {
old_index += len;
}
while (new_index < 0) {
new_index += len;
}
if (new_index >= len) {
var k = new_index - len;
while ((k--) + 1) {
thearr.push(undefined);
}
}
thearr.splice(new_index, 0, thearr.splice(old_index, 1)[0]); // CODE DIES HERE
console.log("NEW ARRAY: ", thearr);
return thearr;
}
console.log("New Reordered ARRAY: ", newArr);
return newArr;
}
会发生什么是 INCOMING arr 丢失 SCOPE 并且当它命中拼接时,我得到 SPLICE 是一个函数。
是的,我正在为一家大型电信公司工作,但仍在使用 AngularJS。无论如何,此时它只是纯 javascript。
【问题讨论】:
-
我实际上需要移动整个 ELE NAME。所以,让我把对象修复得更清楚
-
但是您仍然会遇到无法保留对象字段顺序的问题我们可以解决它们,但不能保证它们会保留在这些位置。
-
请注意,全大写字母被认为是在互联网上大喊大叫。使用粗体或斜体强调,或者完全放弃格式,因为它是不必要的。
标签: javascript arrays javascript-objects