我需要将一系列项目中的四个项目移动到前四个位置。
假设我有以下数组:
var countryList=['Afghanistan','Albania', 'Argentina', 'Australia', 'Bangladesh', 'Belgium','Brazil',...]
我需要在前四个位置移动阿根廷,澳大利亚,比利时和巴西。修改后的数组应如下所示:
var modifiedCountryList=['Argentina', 'Australia','Belgium', 'Brazil', 'Afghanistan', 'Albania', 'Bangladesh', ...]
我找到了答案here,但它是针对单个数组元素的位置移动。
看起来很简单,但我无法绕过它。
答案 0 :(得分:2)
您可以array#concat
两个阵列。使用Set
获取元素并将它们放在数组中。
注意:使用Set
将删除结果数组中的重复元素(如果有)。
const countryList=['Afghanistan','Albania', 'Argentina', 'Australia', 'Bangladesh', 'Belgium','Brazil'],
first = ['Argentina', 'Australia','Belgium', 'Brazil'],
result = [...new Set([].concat(first, countryList))];
console.log(result);
答案 1 :(得分:1)
只需先创建一个包含所需国家/地区的新数组,然后.filter
输出第一个数组中匹配的元素:
const countryList1 = ['Afghanistan','Albania', 'Argentina', 'Australia', 'Bangladesh', 'Belgium','Brazil'];
const countriesInFirst = ['Argentina', 'Australia','Belgium', 'Brazil'];
const countryList2 = [
...countriesInFirst,
...countryList1.filter(country => !countriesInFirst.includes(country))
];
console.log(countryList2);
答案 2 :(得分:1)
var countryList=['Afghanistan','Albania', 'Argentina', 'Australia', 'Bangladesh', 'Belgium','Brazil'];
var filterArray = ["Argentina","Australia","Belgium","Brazil"];
var result = [...filterArray,...countryList].filter((v, i, a) => a.indexOf(v) === i);
console.log(result);

答案 3 :(得分:1)
简单地说,从国家/地区列表中排除第一个国家/地区,然后将已过滤的列表连接到第一个国家'列表:
odoo-bin scaffold openacademy addons

答案 4 :(得分:1)
使用您期望的输出创建一个新数组。另外,我建议使用indexOf
代替includes
,因为includes
会在IE浏览器中出错。您还可以使用spread syntax ...
将数组元素添加到新数组中。
const countryList1 = ['Afghanistan','Albania', 'Argentina', 'Australia', 'Bangladesh', 'Belgium','Brazil'];
const countriesInFirst = ['Argentina', 'Australia','Belgium', 'Brazil'];
const countryList2 = [
...countriesInFirst,
...countryList1.filter(country => countriesInFirst.indexOf(country) === -1)
];
console.log(countryList2);

IE浏览器不支持