从一个包含两个元素的Javascript数组中选择另一个元素。

3

我有一个类似于以下的JavaScript数组:

var arr = ['black', 'white'];

现在如果我有一个包含其中一个元素的变量,如何轻松获取另一个元素呢?例如:

var color = 'black';
var otherColor = '???'; // should be 'white', how can I get it?

我希望您能提供最简单/干净的方式。
此外,我不想改变原始数组。
谢谢。
答案:
怎么样:
请注意:保留HTML标记。
var otherColor = arr[1 - arr.indexOf(color)]

请注意 - 下面提供的所有解决方案都假设您的数组不会增加/减少大小(长度为2个项)。 - mugabits
5个回答

3
您可以使用 Array.prototype.filter 来完成此操作:
var arr = ['black', 'white'];
var color = 'black';
var otherColor = arr.filter(function(item){ return item !== color })[0];

2

三元if语句:

var otherColor = arr[0] === color ? arr[1] : arr[0];

1

arr.filter(x => x !== color)[0]

的意思是筛选数组 arr 中除了颜色为 color 以外的元素,并返回新数组的第一个元素。

0

这里有一个使用解构的 ES6 解决方案,可以加入到混合中。

const arr = ['black', 'white']; // our list of values.
const [black, white] = arr; // destructured into variables black and white
const color = 'black'; 
cont otherColor === black ? black : white;

1
这个解决方案也使用了三元运算符。我添加了这个额外的解决方案,但它并不是最简单的,而且根据你的示例,你也没有使用ES6。 - Jamie Dixon

0
var otherColor = arr[1 - arr.indexOf(color)]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接