我有一个数组对象,在下面给出-
arrayData = [
{label:"data",value:"data"},
{label:"data",value:"data"},
{label:"Others",value:"Others"},
{label:"data",value:"data"},
]
,想将 others 对象移动到数组的最后一个位置,我也不知道该对象的索引值。
谢谢
答案 0 :(得分:0)
您可以先将其过滤掉,然后再推到底:
var arrayData = [
{label:"data",value:"data"},
{label:"data",value:"data"},
{label:"Others",value:"Others"},
{label:"data",value:"data"},
]
var res = arrayData.filter(x => x.label !== 'Others');
res.push(arrayData.find(x => x.label === 'Others'));
console.log(res);
答案 1 :(得分:0)
您可以先获取索引,将其剪接并推动展开的数组。
var array = [{ label: "data", value: "data" }, { label: "data", value: "data" }, { label: "Others", value: "Others" }, { label: "data", value: "data" }],
index = array.findIndex(({ value }) => value === 'Others');
array.push(...array.splice(index, 1));
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 2 :(得分:0)
我也不知道该对象的索引值
为此,您可以使用findIndex。首先获取所需对象的索引,然后在另一个变量中获取数组中的最后一个对象。然后交换他们的位置
var arrayData = [{
label: "data",
value: "data"
},
{
label: "data",
value: "data"
},
{
label: "Others",
value: "Others"
},
{
label: "data",
value: "data"
},
]
let findIndex = arrayData.findIndex(function(item) {
return item.label === 'Others' && item.value === 'Others'
})
let storeLastVal = arrayData[arrayData.length - 1];
let otherVal = arrayData[findIndex]
arrayData[findIndex] = storeLastVal;
arrayData[arrayData.length - 1] = otherVal;
console.log(arrayData)
答案 3 :(得分:0)
首先,您可以解析该数组并创建两个数组,一个数组的元素将保留在原位,另一个数组的元素将放置在末尾。然后,您可以加入这两个数组。
arrayData = [
{label:"data",value:"data"},
{label:"data",value:"data"},
{label:"Others",value:"Others"},
{label:"data",value:"data"},
]
var startValues = [];
var endValues = [];
arrayData.forEach((value) => {
if (value.label === "Others") {
endValues.push(value);
} else {
startValues.push(value);
}
});
arrayData = startValues.concat(endValues);
答案 4 :(得分:0)
或者您可以使用递归。该程序具有明显的优势,因为它无需在开始计算之前就找到元素(或索引)-
const data =
[ { label: "data", value: "data" }
, { label: "data", value: "data" }
, { label: "Others", value: "Others" }
, { label: "data", value: "data" }
]
const transform = ([ a, ...rest ]) =>
a === undefined
? []
: a.label === "Others"
? [ ...transform (rest), a ]
: [ a, ...transform (rest) ]
console .log (transform(data))
// [ { label: "data", value: "data" }
// , { label: "data", value: "data" }
// , { label: "data", value: "data" }
// , { label: "Others", value: "Others" }
// ]
很显然,您应该将"Others"
设为函数的参数-
const data =
[ { label: "data", value: "data" }
, { label: "data", value: "data" }
, { label: "Others", value: "Others" }
, { label: "data", value: "data" }
]
const transform = (query, [ a, ...rest ]) =>
a === undefined
? []
: a.label === query
? [ ...transform (query, rest), a ]
: [ a, ...transform (query, rest) ]
console .log (transform ("Others", data))
// [ { label: "data", value: "data" }
// , { label: "data", value: "data" }
// , { label: "data", value: "data" }
// , { label: "Others", value: "Others" }
// ]
console .log (transform ("data", data))
// [ { label: "Others", value: "Others" }
// , { label: "data", value: "data" }
// , { label: "data", value: "data" }
// , { label: "data", value: "data" }
// ]
注意,原始输入是 not 突变的。如果找到多个与查询匹配的标签,则所有所有都将移至数组的末尾。