Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 识别对象循环中的最后一次迭代_Javascript_For Loop - Fatal编程技术网

Javascript 识别对象循环中的最后一次迭代

Javascript 识别对象循环中的最后一次迭代,javascript,for-loop,Javascript,For Loop,我有一个这样的目标: var data = { "Something": true, "Something else": false, "Blah": false, "a fish": true }; 然后我循环这个对象,并将任何一行的键添加到字符串中 var stringContent = ""; for (var prop in data) { if (data[prop] === true) { stringContent += (

我有一个这样的目标:

var data = {
    "Something": true,
    "Something else": false,
    "Blah": false,
    "a fish": true
};
然后我循环这个对象,并将任何一行的键添加到字符串中

var stringContent = "";
for (var prop in data) {
    if (data[prop] === true) {
        stringContent += (prop) += ', ';
    }
}
因此,使用上面的方法,字符串将是

Something, a fish
但是,我想做的是识别添加到字符串中的最后一项。在最后一次迭代中,我想将单词和附加到字符串的前面。因此,上述情况最终应该得到解决

Something, and a fish

这可能吗?

我想这就行了。你需要先去掉这些错误的元素,然后才能处理剩下的东西

let trues = Object.keys(data)
.filter(k => data[k])

return trues.slice(0,-1)
.join(',')
+ ', and ' + trues.slice(-1)[0]

我想这就行了。你需要先去掉这些错误的元素,然后才能处理剩下的东西

let trues = Object.keys(data)
.filter(k => data[k])

return trues.slice(0,-1)
.join(',')
+ ', and ' + trues.slice(-1)[0]

也可以这样做

        var inputstr = "Something, a fish";
        var values = inputstr.split(',');
        var last =" and " + values[values.length - 1];
        var lastIndex = str.lastIndexOf(',');
        str = str.substring(0, lastIndex);
        var finalstr= str + last;

也可以这样做

        var inputstr = "Something, a fish";
        var values = inputstr.split(',');
        var last =" and " + values[values.length - 1];
        var lastIndex = str.lastIndexOf(',');
        str = str.substring(0, lastIndex);
        var finalstr= str + last;

在讨论对象属性时,“最后添加”没有多大意义;他们没有秩序的概念。您可能需要考虑维护订单的并行结构。除非你只是说“last”是“在last上迭代的东西”,这看起来很简单。那么用数组来代替呢?这会涉及很多变化吗?没有线索,这取决于实际需要改变多少东西。“最后添加”在讨论对象属性时没有多大意义;他们没有秩序的概念。您可能需要考虑维护订单的并行结构。除非你只是说“last”是“在last上迭代的东西”,这看起来很简单。那么用数组来代替呢?这会涉及很多变化吗?没有线索,取决于实际需要改变多少东西。