gpt4 book ai didi

javascript - 如何在 underscore.js 中实现 `zipWithIndex`?

转载 作者:行者123 更新时间:2023-11-29 21:46:38 26 4
gpt4 key购买 nike

本质上,当 zipWithIndex 应用于数组时,它应该生成另一个数组,其中键作为值,值作为数组元素(反之亦然)。

最佳答案

更新

根据 OP 的评论,返回值应该是一个对象数组,每个对象都包含一个属性,该属性是输入数组/对象的倒置属性(即键和值交换位置)。

function invert(list) {
return _.map(list, function(val, key) {
var obj = {};
obj[val] = key;
return obj;
});
}

示例 1:['a', 'b', 'c'] ==> [{a:0}, {b:1}, {c:2}]

示例 2:{key1:'a', key2:'b'} ==> [{a:'key1'}, {b:'key2'}]

function invert(list) {
return _.map(list, function(val, key) {
var obj = {};
obj[val] = key;
return obj;
});
}


function doAlert(input) {
alert (JSON.stringify(input) + ' ==> ' + JSON.stringify(invert(input)));
}

doAlert(['a', 'b', 'c']);
doAlert({key1: 'a', key2: 'b'});
<script src="http://underscorejs.org/underscore-min.js"></script>

喜欢_.invert Underscore.JS 中的函数,值必须是可序列化的(即可转换为字符串)才能具有可预测的行为。


原始答案

考虑:

function zipWithIndex(list) {
return _.map(list, function(val, key) { return [val, key]; });
}

这实际上应该适用于对象和数组(就 _.map 而言,任何可以迭代的东西)。

zipWithIndex 的实现基于 Scala's implementation (我能找到的唯一一种定义了这个函数的广泛使用的语言)。

function zipWithIndex(list) {
return _.map(list, function(val, key) { return [val, key]; });
}

function doAlert(input) {
alert (JSON.stringify(input) + ' ==> ' + JSON.stringify(zipWithIndex(input)));
}

doAlert(['a', 'b', 'c']);
doAlert({key1: 'a', key2: 'b'});
<script src="http://underscorejs.org/underscore-min.js"></script>

关于javascript - 如何在 underscore.js 中实现 `zipWithIndex`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30948779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com